¿Cómo insertar mediante programación una nueva línea en una celda de Excel en C #?

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

  •  19-09-2019
  •  | 
  •  

Pregunta

Estoy usando la biblioteca Aspose para crear un documento de Excel. En alguna parte de alguna célula que necesito para insertar una nueva línea entre dos partes del texto.

He intentado "\ r \ n", pero que no funciona, sólo muestra dos símbolos cuadrados en la célula. sin embargo, puedo pulsar Alt + Enter para crear una nueva línea en la misma celda.

¿Cómo se inserta una nueva línea de programación?

¿Fue útil?

Solución

de las células foros Aspose: ¿Cómo utilizar la nueva línea con carbón en una celda?

Después de que proporciona el texto que debe establecer el estilo IsTextWrapped de la célula para true

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

Otros consejos

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

Si está recibiendo el texto de base de datos a continuación:

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

Es necesario insertar el código de caracteres que utiliza Excel, que IIRC es de 10 (diez).


Editar : OK, aquí hay algo de código. Tenga en cuenta que yo era capaz de confirmar que el código de caracteres que se utiliza es de hecho 10, mediante la creación de una célula que contiene:

  

A

     

B

... y después de seleccionarlo y ejecutar esto en la ventana inmediata VBA:

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

Por lo tanto, el código tiene que insertar ese valor en otra celda en VBA sería:

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

(ya que es vbLf código de carácter 10).

Sé que estás usando C #, pero me parece que es más más fácil de averiguar qué hacer si primero lo hace en VBA, ya que se puede probarlo "interactiva" sin tener que compilar cualquier cosa. Cualquier cosa que hagas en C # es simplemente replicando lo que haces en VBA por lo que no suele haber diferencia. (Recuerde que el C # interoperabilidad cosas es sólo con las mismas bibliotecas COM subyacentes como VBA).

De todos modos, el C # para esto sería:

oCell.Value = "A\nB";

Encuentra las diferencias: -)


EDIT 2 : Aaaargh! Acabo de volver a leer el post y vi que estás utilizando la biblioteca Aspose. Lo sentimos, en este caso, no tengo idea.

Internamente Excel utiliza U + 000D U + 000A (CR + LF, \r\n) para un salto de línea, al menos en su representación XML. Tampoco podía encontrar el valor directamente en una celda. Se migró a otro archivo XML que contiene cadenas compartidas. Tal vez las células que contienen saltos de línea se manejan de manera diferente por el formato de archivo y la biblioteca no sabe nada de esto.

SpreadsheetGear para .NET hace de esta manera:

        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);

Tenga en cuenta el "wrapText = true" - Excel no ajustar el texto sin este. Supongo que tiene Aspose API similares.

exención de responsabilidad: Soy dueño de SpreadsheetGear LLC

Si alguien está interesado en la solución Infragistics, aquí está.

  1. Uso

    Environment.NewLine

  2. Asegúrese de que su celular se envuelve

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

"\ n" funciona bien. Si la entrada proviene de un cuadro de texto de varias líneas, los caracteres de nueva línea será "\ r \ n", si esto se reemplaza por "\ n", que funcionará.

Uso PEAR 'Spreadsheet_Excel_Writer' y 'OLE':

La única manera que podría conseguir "\n" al trabajo estaba haciendo el $format->setTextWrap(); celular y luego usando "\n" funcionaría.

Puede utilizar Chr (13). A continuación, sólo envolver toda la cosa en Chr (34). Chr (34) es comillas dobles.

  • VB.Net Ejemplo:
  • TheContactInfo = ""
  • TheContactInfo = Trim (TheEmail) y chr (13)
  • TheContactInfo = TheContactInfo y Trim (thephone) y chr (13)
  • TheContactInfo = Chr (34) y TheContactInfo & Chr (34)

Lo que funcionó para mí:

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

Mi problema era que el \ r \ n vino escapó.

En realidad, es muy simple.

Es posible editar una versión XML de Excel. Editar una celda para darle nueva línea entre el texto, a continuación, guardarlo. Más tarde, puede abrir el archivo en el editor, a continuación, verá una nueva línea está representada por &#10;

Tenga un intento ....

¿Usted ha intentado "\ n" supongo, que debería funcionar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top