1 Вопрос: Что это за код формата (\ r \ a), который я получаю при использовании офисного взаимодействия в c #?

вопрос создан в Thu, May 2, 2019 12:00 AM

Я пишу некоторый код для итерации по таблицам документа Word (количество таблиц в сотнях, но я не думаю, что это имеет значение) и заполняю их поля данными из таблиц, найденных в другом документе Word, используя c # в Visual Студия.

В основном копирование данных из некоторых таблиц в документе B в таблицы в документе A. Мне нужно убедиться, что несколько ячеек из документа B и документа A совпадают, прежде чем я перенесу данные, но это оказывается трудным, потому что данные имеют форматирование, которое в конечном итоге вызывает ошибки, потому что два поля не равны, хотя они имеют одинаковый видимый текст.

Чтобы извлечь текст из отдельных ячеек таблицы, которую я использовал,

table.Cell(row,col).Range.Text;

Но это вернуло значение, такое как "Значение этой ячейки \r \a" поэтому мне пришлось изменить удалить

table.Cell(row,col).Range.Replace("\r\a","").Text;

Это работает, но мне интересно, есть ли другой, менее громоздкий способ достижения результата или что на самом деле означает \r \a . Просматривая Google и StackOverflow, я не смог найти ничего, что ответило на мои вопросы. Спасибо.

    
0
  1. 2019-05-02 15: 17: 45Z
  2. Спасибо, я полагал, что это что-то из Word, и никогда не думал проверить, было ли это в c #. Я ценю ссылку!
    2019-05-02 15: 21: 32Z
  3. Эта последовательность является нетипичной, обычно для возврата каретки + перевода строки для разрывов строки в Windows используется "\r\n".
    2019-05-02 15: 39: 06Z
1 ответ                              1                         

Символьная комбинация ANSI 13 + ANSI 7 определяет структуру таблицы (конец ячейки /конец строки) и поэтому должна быть урезана из текстовых строк, полученных при чтении содержимого ячейки таблицы. Я использую функцию, такую ​​как следующее. Использование Replace не рекомендуется, поскольку ячейка таблицы может содержать дополнительный ANSI 13 (знаки абзаца, что вы считаете «новыми строками», но в Word это больше, чем просто - подумайте о html p vs br, то есть ANSI 11 в Word , новая строка).

//cut off ANSI 13 + ANSI 7 from the end of the string coming from a 
//Word table cell
private string TrimCellText2(s As String)
{
    int len = s.Length;
    while (len > 0 && s.Substring(len - 1) == (char)13 || s.Substring(len - 1) == (char)7);
    {
        s = s.Substring(0, Math.Min(len-1, len));   
    }
    return s;
}
    
1
2019-05-03 05: 09: 36Z
  1. Спасибо, это также решает проблему, и я понимаю, что вы имеете в виду о проблемах, которые могут возникнуть в результате замены. Я ценю его! Мои исследования не позволяют мне найти какой-либо составленный список этих комбинаций символов и их функциональность в Word. Знаете ли вы, если таковой существует в Интернете?
    2019-05-03 10: 40: 34Z
источник размещен Вот