Более оптимальный вариант... просто разделяет все символы нецифры на входе (кроме 'x' и ведущий '+' знаки), заботясь из-за британской тенденции записать числа в нестандартной форме +44 (0) ...
, когда спросили использовать международный префикс (в том конкретном случае, необходимо отбросить (0)
полностью).
Затем Вы заканчиваете со значениями как:
12345678901
12345678901x1234
345678901x1234
12344678901
12345678901
12345678901
12345678901
+4112345678
+441234567890
Тогда, когда Вы отобразитесь, переформатируйте к своему содержанию основ. например,
1 (234) 567-8901
1 (234) 567-8901 x1234
Из форумов Aspose Cells: Как использовать символ новой строки в ячейке?
После ввода текста вы должны установить для стиля IsTextWrapped ячейки значение true
worksheet.Cells[0, 0].Style.WrapText = true;
Вам необходимо вставить код символа, который использует 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. Извините, в таком случае я понятия не имею.
Внутренне Excel использует U + 000D U + 000A (CR + LF, \ r \ n
) для разрыва строки, по крайней мере, в его XML-представлении. . Я также не мог найти значение прямо в ячейке. Он был перенесен в другой XML-файл, содержащий общие строки. Возможно, ячейки, содержащие разрывы строк, по-разному обрабатываются форматом файла, и ваша библиотека не знает об этом.
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
"\ n" работает нормально. Если ввод поступает из многострочного текстового поля, символы новой строки будут "\ r \ n", если его заменить на "\ n", это будет работать.