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

StackOverflow https://stackoverflow.com/questions/1176548

  •  19-09-2019
  •  | 
  •  

Вопрос

Я использую библиотеку Aspose для создания документа Excel.Где-то в какой-то ячейке мне нужно вставить новую строку между двумя частями текста.

Я попробовал « », но это не работает, просто отображает два квадратных символа в ячейке.Однако я могу нажать Alt+Enter, чтобы создать новую строку в той же ячейке.

Как программно вставить новую строку?

Это было полезно?

Решение

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

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

worksheet.Cells[0, 0].Style.WrapText = true;

Другие советы

cell.Text = "your firstline<br style=\"mso-data-placement:same-cell;\">your secondline";

Если вы получаете текст из БД, то:

cell.Text = textfromDB.Replace("\n", "<br style=\"mso-data-placement:same-cell;\">");

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


РЕДАКТИРОВАТЬ:Хорошо, вот код.Обратите внимание, что мне удалось подтвердить, что используемый код символа действительно равен 10, создав ячейку, содержащую:

А

Б

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

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

Итак, код, который вам понадобится для вставки этого значения в другую ячейку в VBA, будет следующим:

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

(поскольку vbLf — это код символа 10).

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

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

oCell.Value = "A\nB";

Найди отличие :-)


РЕДАКТИРОВАТЬ 2:Аааа!Я только что перечитал пост и увидел, что вы используете библиотеку Aspose.Извините, в таком случае я понятия не имею.

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

Электронная таблицаGear для .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.

Если кого-то интересует решение Infragistics, вот оно.

  1. Использовать

    Environment.NewLine

  2. Убедитесь, что ваша ячейка упакована

    dataSheet.Rows[i].Cells[j].CellFormat.WrapText = ExcelDefaultableBoolean.True;

« » работает нормально.Если ввод поступает из многострочного текстового поля, символы новой строки будут « », если их заменить на « », это будет работать.

Использование PEAR «Spreadsheet_Excel_Writer» и «OLE»:

Единственный способ, которым я мог получить "\n"Работа заключалась в создании ячейки $format->setTextWrap(); а затем используя "\n" должно сработать.

Вы можете использовать Chr(13).Затем просто оберните все это в Chr(34).Chr(34) — это двойные кавычки.

  • Пример VB.Net:
  • Контактная информация = ""
  • TheContactInfo = Trim(TheEmail) & chr(13)
  • TheContactInfo = TheContactInfo & Trim(ThePhone) & chr(13)
  • TheContactInfo = Chr(34) & TheContactInfo & Chr(34)

Что сработало для меня:

worksheet.Cells[0, 0].Style.WrapText = true;
worksheet.Cells[0, 0].Value = yourStringValue.Replace("\\r\\n", "\r\n");

Моя проблема заключалась в том, что сбежал.

На самом деле, это действительно просто.

Вы можете редактировать XML-версию Excel.Отредактируйте ячейку, добавив в нее новую строку между текстом, а затем сохраните ее.Позже вы можете открыть файл в редакторе, тогда вы увидите новую строку, представленную&#10;

Попробуй....

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top