Что это за код формата (\ r \ a), который я получаю при использовании офисного взаимодействия в c #? - PullRequest
0 голосов
/ 02 мая 2019

Я пишу некоторый код для итерации по таблицам документа 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, я не смог найти ничего, что ответило на мои вопросы. Спасибо.

1 Ответ

1 голос
/ 03 мая 2019

Символьная комбинация 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;
}
...