Есть документ с содержимым вроде "Привет [[username]]". Нужно программно заменить "[[username]]" на свой текст не испортив форматирование и не используя word.
Добавить в References
Microsoft.Office.Interop.Word
и использовать replace(string fileName, string findText, string replaceText)
из кода, приведенного ниже
using Word = Microsoft.Office.Interop.Word;
...
protected static void ReplaceWord(Word.Range range, object findText, object replaceText)
{
object matchCase = false;
object matchWholeWord = true;
object matchWildCards = false;
object matchSoundsLike = false;
object matchAllWordForms = false;
object forward = true;
object format = false;
object matchKashida = false;
object matchDiacritics = false;
object matchAlefHamza = false;
object matchControl = false;
object read_only = false;
object visible = true;
object replace = Word.WdReplace.wdReplaceAll;
object wrap = Word.WdFindWrap.wdFindContinue;
range.Find.Execute(ref findText, ref matchCase, ref matchWholeWord,
ref matchWildCards, ref matchSoundsLike, ref matchAllWordForms, ref forward, ref wrap, ref format, ref replaceText, ref replace,
ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl);
foreach (Word.Shape shape in range.ShapeRange)
if (Convert.ToBoolean(shape.TextFrame.HasText).Equals(true))
ReplaceWord(shape.TextFrame.TextRange, findText, replaceText);
}
public static replace(string fileName, string findText, string replaceText)
{
Word.Application objWord = new Word.Application();
try
{
Word.Document doc = objWord.Documents.Open(fileName);
foreach (Word.Range range in doc.StoryRanges)
ReplaceWord(range, findText, replaceText);
foreach (Word.Section section in doc.Sections)
{
foreach (Word.HeaderFooter headerFooter in section.Headers)
ReplaceWord(headerFooter.Range, findText, replaceText);
foreach (Word.HeaderFooter headerFooter in section.Footers)
ReplaceWord(headerFooter.Range, findText, replaceText);
}
doc.Save();
object save = false;
object missing = null;
doc.Close(ref save, ref missing, ref missing);
}
catch (Exception ex)
{
}
objWord.Quit();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Сначала пытался закинуть в SqlBulkCopy DataTable из 1000 (Для теста), но получил ошибку таймаута