J'ai essayé d'abord d'utiliser Word.Selection, mais je ne pouvais pas trouver une façon de prendre une ligne à la fois et de la coller. Il pourrait être possible de faire en utilisant Word.Selection. La prochaine chose à laquelle je pensais était de copier une cellule à la fois, mais Range Property garde la structure de la cellule du tableau. J'ai regardé dans le modèle de mot et ai essayé de découvrir s'il y a une sorte de caractère de fin après chaque rangée pour le distinguer comme fin de rangée. Il y a un tel personnage mais c'est pour toutes les cellules. Pour trouver ce personnage, cliquez sur le bouton de bureau (en dehors de Accueil), cliquez sur options de mots, cliquez sur l'affichage, dans la section toujours afficher ces marques de formatage sur l'écran, cocher afficher toutes les marques de mise en forme. Cela affiche tous les caractères non imprimables dans un document Word. C'est le symbole que vous pourrez voir ¤.
Ce symbole contient les informations structurelles de la cellule et les caractères ANSI exposés sont 13 + 7. 13 est une marque de paragraphe et 7 est le marqueur de "fin de cellule". Cela contient d'autres informations qui pointent vers la gestion de la structure cellulaire dans le fichier. Dans Word 2007, ces deux caractères apparaissent comme un seul caractère, ce que nous devons faire est de supprimer ce personnage de la portée de la cellule.
J'ai créé une liste pour contenir toutes les cellules dont j'ai besoin de la table principale.
List<Microsoft.Office.Interop.Word.Cell> masterTableCells=new List<Microsoft.Office.Interop.Word.Cell>();
Après que le code suivant supprime le dernier caractère de la gamme
Microsoft.Office.Interop.Word.Table table = b.Range.Tables[1];
table.ID = b.Name;
for (int colCounter = 1; colCounter <= masterTable.Columns.Count; colCounter++)
{
Microsoft.Office.Interop.Word.Range sourceRange = masterTable.Cell(1, colCounter).Range;
Microsoft.Office.Interop.Word.Range targetRange = table.Cell(1, colCounter).Range;
object oCharacter = Microsoft.Office.Interop.Word.WdUnits.wdCharacter;
object negOne = -1;
sourceRange.MoveEnd(oCharacter, negOne);
targetRange.MoveEnd(oCharacter, negOne);
targetRange.FormattedText = sourceRange.FormattedText;
}
Le but était d'obtenir du texte formaté et en supprimant le caractère de chaque plage de cellules, nous sommes en mesure d'indiquer seulement structure de la cellule particulière et non pas l'ensemble des tables.
Si vous tentez d'exécuter une boucle avec une propriété de texte uniquement mise en forme, vous obtiendrez une erreur de table corrompue. J'espère que cela t'aides.
Lorsque vous dites que vous ne pouvez pas utiliser table.Cell(). Range.Text avez-vous le code où vous l'avez essayé et cela ne fonctionne pas. Selon MS cela peut être fait même avec le formatage. Checkout ce lien pour les débutants http://msdn.microsoft.com/en-us/library/aa537149%28v=office.11%29.aspx – MethodMan
Je dois m'assurer que la mise en forme de la table principale que j'ai est reportée, Je ne pense pas que ce serait possible avec Range.Text – gizgok
Avez-vous regardé le lien, ils fournissent des exemples impressionnants .. sans voir le code que vous avez ou avez essayé ..C'est un peu difficile de poster des échantillons de code car une suggestion ne voudrait pas vous mener dans le mauvais sens .. – MethodMan