Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

souci avec un namespace!

1 réponse
Avatar
nima84
bonjour à tous;
voila j'avais posté plusieurs fois à cause de mon probleme de manipulation
de word à partire de mon application asp.net; et apres des recherches j'ai
trouvé un article qui me montre une possibilité de solution et cela en
utilisant l'automation donc rajout de references la seul chose qui me bloc
c'est que la solution passe par la création d'une namespace et d'y faire
appele dans la page du code behind ;
le probleme c'est je ne sais pas comment on fait appel à des procedure de ce
genre en c#
si quelqu'un pouvais m'aidé ou m'orienté jen serai trés contente é
reconnaissante
merci d'avance pour tout
respectueusement
nima84
PS : je ne sais pas si ça va vous aidez mais bon voila le code du namespace


>>>>>>>>>>>>>>>>>>>>
namespace WordAutomation
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Fusion
{
public static string START_PATTERN = "<<";
public static string END_PATTERN = ">>";

/// <summary>
/// The fusion entry point for the application.
/// </summary>

[STAThread]
public static void MergeDocument(Hashtable h, string inDoc, string
outDoc)
{
// Déclaration des variables automation
object FileSave = (object)outDoc;
object WordFormat = 1;
object missing = System.Reflection.Missing.Value;
object modelAdress = inDoc;
object newTemplate = false;
object oFalse = false;
object docType = 0;
object isVisible = true;
object o = Missing.Value;
string currentWord, currentKey;
object saveChanges = false;

Word.ApplicationClass WordApp = new Word.ApplicationClass();
Word.Document aDoc = WordApp.Documents.Add(ref modelAdress, ref
newTemplate, ref missing, ref oFalse);
IEnumerator ie = aDoc.Words.GetEnumerator();

// Visibilité du document
WordApp.Visible = false;
// Activation du document
aDoc.Activate();

while (ie.MoveNext())
{
// After word replace, it can still exists END_PATTERN,
remove it.
currentWord = ((Word.Range)ie.Current).Text;
if (currentWord.StartsWith(START_PATTERN))
{
// Remove "<<" pattern
((Word.Range)ie.Current).Delete(ref missing, ref missing);
ie.MoveNext();
currentKey = ((Word.Range)ie.Current).Text;
// Remove key pattern
((Word.Range)ie.Current).Delete(ref missing, ref missing);
// Replace by value string in hashtable

((Word.Range)ie.Current).InsertAfter(h[currentKey].ToString());
// Remove ">>" pattern
ie.MoveNext(); ie.MoveNext();
// Remove ">>" pattern
((Word.Range)ie.Current).Text =
((Word.Range)ie.Current).Text.Replace(END_PATTERN, "");
}
if (currentWord.StartsWith(END_PATTERN))
((Word.Range)ie.Current).Text =
((Word.Range)ie.Current).Text.Replace(END_PATTERN, "");
}
// Sauvegarde du document
aDoc.SaveAs2000(ref FileSave, ref WordFormat, ref oFalse, ref
missing, ref oFalse, ref missing, ref oFalse, ref oFalse, ref oFalse, ref
oFalse, ref oFalse);
// Désallocation des ressources
saveChanges = false;
aDoc.Close(ref saveChanges, ref missing, ref missing);
WordApp.Quit(ref saveChanges, ref missing, ref missing);
WordApp = null;
}
public static void Main()
{
Hashtable h = new Hashtable();

// La source de données ici est une hashtable codée en dur
h.Add("Civilite", "Mr");
h.Add("Nom", "GIL");
h.Add("Prenom", "Thomas");
h.Add("Date", DateTime.Now);

// Appel la fusion en précisant le document modèle et le
document généré
MergeDocument(h, "c:\\modele.dot", "c:\\generated.doc");
}
}
}
>>>>>>>>>>>>>>voila j'espere avoir eté claire et bien informative pour que vous puissiez m'aidé
encore merci ;-)

1 réponse

Avatar
Paul Bacelar
Ajouter "using WordAutomation;" au début de la page du code behind .
--
Paul Bacelar
MVP VC++

"nima84" wrote in message
news:
bonjour à tous;
voila j'avais posté plusieurs fois à cause de mon probleme de manipulation
de word à partire de mon application asp.net; et apres des recherches
j'ai
trouvé un article qui me montre une possibilité de solution et cela en
utilisant l'automation donc rajout de references la seul chose qui me bloc
c'est que la solution passe par la création d'une namespace et d'y faire
appele dans la page du code behind ;
le probleme c'est je ne sais pas comment on fait appel à des procedure de
ce
genre en c#
si quelqu'un pouvais m'aidé ou m'orienté jen serai trés contente é
reconnaissante
merci d'avance pour tout
respectueusement
nima84
PS : je ne sais pas si ça va vous aidez mais bon voila le code du
namespace











































namespace WordAutomation
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Fusion
{
public static string START_PATTERN = "<<";
public static string END_PATTERN = ">>";

/// <summary>
/// The fusion entry point for the application.
/// </summary>

[STAThread]
public static void MergeDocument(Hashtable h, string inDoc, string
outDoc)
{
// Déclaration des variables automation
object FileSave = (object)outDoc;
object WordFormat = 1;
object missing = System.Reflection.Missing.Value;
object modelAdress = inDoc;
object newTemplate = false;
object oFalse = false;
object docType = 0;
object isVisible = true;
object o = Missing.Value;
string currentWord, currentKey;
object saveChanges = false;

Word.ApplicationClass WordApp = new Word.ApplicationClass();
Word.Document aDoc = WordApp.Documents.Add(ref modelAdress, ref
newTemplate, ref missing, ref oFalse);
IEnumerator ie = aDoc.Words.GetEnumerator();

// Visibilité du document
WordApp.Visible = false;
// Activation du document
aDoc.Activate();

while (ie.MoveNext())
{
// After word replace, it can still exists END_PATTERN,
remove it.
currentWord = ((Word.Range)ie.Current).Text;
if (currentWord.StartsWith(START_PATTERN))
{
// Remove "<<" pattern
((Word.Range)ie.Current).Delete(ref missing, ref
missing);
ie.MoveNext();
currentKey = ((Word.Range)ie.Current).Text;
// Remove key pattern
((Word.Range)ie.Current).Delete(ref missing, ref
missing);
// Replace by value string in hashtable

((Word.Range)ie.Current).InsertAfter(h[currentKey].ToString());
// Remove ">>" pattern
ie.MoveNext(); ie.MoveNext();
// Remove ">>" pattern
((Word.Range)ie.Current).Text > ((Word.Range)ie.Current).Text.Replace(END_PATTERN, "");
}
if (currentWord.StartsWith(END_PATTERN))
((Word.Range)ie.Current).Text > ((Word.Range)ie.Current).Text.Replace(END_PATTERN, "");
}
// Sauvegarde du document
aDoc.SaveAs2000(ref FileSave, ref WordFormat, ref oFalse, ref
missing, ref oFalse, ref missing, ref oFalse, ref oFalse, ref oFalse, ref
oFalse, ref oFalse);
// Désallocation des ressources
saveChanges = false;
aDoc.Close(ref saveChanges, ref missing, ref missing);
WordApp.Quit(ref saveChanges, ref missing, ref missing);
WordApp = null;
}
public static void Main()
{
Hashtable h = new Hashtable();

// La source de données ici est une hashtable codée en dur
h.Add("Civilite", "Mr");
h.Add("Nom", "GIL");
h.Add("Prenom", "Thomas");
h.Add("Date", DateTime.Now);

// Appel la fusion en précisant le document modèle et le
document généré
MergeDocument(h, "c:modele.dot", "c:generated.doc");
}
}
}
voila j'espere avoir eté claire et bien informative pour que
vous puissiez m'aidé




























encore merci ;-)