Как вставить программно новую строку в ячейку Excel в C#?

Более оптимальный вариант... просто разделяет все символы нецифры на входе (кроме 'x' и ведущий '+' знаки), заботясь из-за британской тенденции записать числа в нестандартной форме +44 (0) ..., когда спросили использовать международный префикс (в том конкретном случае, необходимо отбросить (0) полностью).

Затем Вы заканчиваете со значениями как:

 12345678901
 12345678901x1234
 345678901x1234
 12344678901
 12345678901
 12345678901
 12345678901
 +4112345678
 +441234567890

Тогда, когда Вы отобразитесь, переформатируйте к своему содержанию основ. например,

  1 (234) 567-8901
  1 (234) 567-8901 x1234
22
задан User 24 July 2009 в 09:13
поделиться

6 ответов

Из форумов Aspose Cells: Как использовать символ новой строки в ячейке?

После ввода текста вы должны установить для стиля IsTextWrapped ячейки значение true

worksheet.Cells[0, 0].Style.WrapText = true;
27
ответ дан 29 November 2019 в 04:40
поделиться

Вам необходимо вставить код символа, который использует Excel, IIRC - 10 (десять).


ИЗМЕНИТЬ : ОК, вот код. Обратите внимание, что я смог подтвердить, что используемый код символа действительно равен 10, создав ячейку, содержащую:

A

B

... и затем выбрав ее и выполнив это в непосредственном окне VBA:

?Asc(Mid(Activecell.Value,2,1))

Итак, код, который вам нужно вставить в другую ячейку в VBA, будет:

ActiveCell.Value = "A" & vbLf & "B"

(поскольку vbLf - это символьный код 10).

Я знаю, что вы используете C #, но я считаю, что это Намного легче понять, что делать, если вы сначала сделаете это в VBA, так как вы можете опробовать это «в интерактивном режиме» без необходимости ничего компилировать. Все, что вы делаете в C #, просто копирует то, что вы делаете в VBA, поэтому разница редко бывает. (Помните, что взаимодействие с C # просто использует те же базовые библиотеки COM, что и VBA.)

В любом случае, C # для этого будет:

oCell.Value = "A\nB";

Найдите разницу: -)


EDIT 2 : Aaaargh ! Я просто перечитал сообщение и увидел, что вы используете библиотеку Aspose. Извините, в таком случае я понятия не имею.

5
ответ дан 29 November 2019 в 04:40
поделиться

Внутренне Excel использует U + 000D U + 000A (CR + LF, \ r \ n ) для разрыва строки, по крайней мере, в его XML-представлении. . Я также не мог найти значение прямо в ячейке. Он был перенесен в другой XML-файл, содержащий общие строки. Возможно, ячейки, содержащие разрывы строк, по-разному обрабатываются форматом файла, и ваша библиотека не знает об этом.

3
ответ дан 29 November 2019 в 04:40
поделиться

SpreadsheetGear для .NET делает это следующим образом:

        IWorkbook workbook = Factory.GetWorkbook();
        IRange a1 = workbook.Worksheets[0].Cells["A1"];
        a1.Value = "Hello\r\nWorld!";
        a1.WrapText = true;
        workbook.SaveAs(@"c:\HelloWorld.xlsx", FileFormat.OpenXMLWorkbook);

Обратите внимание на «WrapText = true» - Excel не будет переносить текст без этого. Я предполагаю, что у Aspose есть аналогичные API.

Отказ от ответственности: я владею SpreadsheetGear LLC

1
ответ дан 29 November 2019 в 04:40
поделиться

Вы пробовали "\ n", думаю, должно сработать.

-2
ответ дан 29 November 2019 в 04:40
поделиться

"\ n" работает нормально. Если ввод поступает из многострочного текстового поля, символы новой строки будут "\ r \ n", если его заменить на "\ n", это будет работать.

0
ответ дан 29 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: