Советы по извлечению текста из слов и обработке символов разрыва ячеек - PullRequest
2 голосов
/ 18 декабря 2008

Нужен совет (возможно, лучшая практика).

У нас есть документ MS Word (Office 2007), из которого мы извлекаем текст из ячейки.

Мы можем использовать следующее:

string text = wordTable.cell(tablerow.index, 1).Range.Text;

Текст извлечен; однако мы, кажется, получаем дополнительные символы, например \r\a.

Теперь мы можем добавить следующее:

.... wordTable.cell(tablerow.index, 1).Range.Text.Replace("\r\a,"");

Но это кажется слишком ленивым и в значительной степени пустой тратой времени, которое, скорее всего, приведет к проблемам в будущем.

У нас также может быть метод, который получает очищаемую строку:

private string cleanTextWordCellBreak(string wordTextToClean)
{
    // Clean the text here
    return cleanstring;
}

тогда мы могли бы использовать это:

cleanTextWordCellBreak(wordTable.cell(tablerow.index, 1).Range.Text;
);

Это похоже на лучший способ решения проблемы. Что бы вы сделали?

Ответы [ 3 ]

1 голос
/ 18 декабря 2008

Я бы разбил его на отдельный метод, но использовал бы замену, так как это самое простое решение. Вы всегда можете изменить реализацию позже, если столкнетесь с проблемой (например, текст содержит более одного \r\a и его необходимо сохранить)

Итак:

private string stripCellText(string text)
{
      return text.Replace("\r\a", "");
}

string text = stripCellText(wordTable.cell(tablerow.index, 1).Range.Text);
0 голосов
/ 18 декабря 2008

Другой способ получить это - получить длину символов и извлечь текст до этой длины.

</p> <pre> dim range as Range dim text as string dim length as Integer range = ActiveDocument.Tables(1).Cell(1,1).Range text = range.Text length = range.Characters.Count Debug.Print Mid(text, 1, length - 1) </pre> <p>

0 голосов
/ 18 декабря 2008

Я бы определенно выбрал его для отдельного метода. это помогает с удобочитаемостью кода и значительно облегчает изменение при необходимости в будущем.

...