get_range - range in excel c#
¿Cómo insertar programáticamente una nueva línea en una celda de Excel en C#? (11)
Estoy usando la biblioteca Aspose para crear un documento de Excel. En algún lugar de alguna celda, necesito insertar una nueva línea entre dos partes del texto.
Intenté "/ r / n" pero no funciona, solo muestra dos símbolos cuadrados en la celda. Sin embargo, puedo presionar Alt + Enter para crear una nueva línea en esa misma celda.
¿Cómo inserto una nueva línea programáticamente?
"/ n" funciona bien. Si la entrada proviene de un cuadro de texto multilínea, los nuevos caracteres de línea serán "/ r / n", si esto se reemplaza por "/ n", funcionará.
¿Has probado "/ n"? Supongo que debería funcionar.
Debe insertar el código de carácter que utiliza Excel, que IIRC es 10 (diez).
EDITAR : OK, aquí hay un código. Tenga en cuenta que pude confirmar que el código de caracteres utilizado es de hecho 10, al crear una celda que contiene:
UN
segundo
... y luego seleccionarlo y ejecutar esto en la ventana inmediata de VBA:
?Asc(Mid(Activecell.Value,2,1))
Entonces, el código que necesita para insertar ese valor en otra celda en VBA sería:
ActiveCell.Value = "A" & vbLf & "B"
(dado que vbLf es el código de carácter 10).
Sé que estás usando C #, pero me parece mucho más fácil averiguar qué hacer si primero lo haces en VBA, ya que puedes probarlo "de forma interactiva" sin tener que compilar nada. Todo lo que haces en C # es simplemente replicar lo que haces en VBA, por lo que rara vez hay diferencia. (Recuerde que las cosas de interoperabilidad de C # solo usan las mismas bibliotecas COM subyacentes que VBA).
De todos modos, el C # para esto sería:
oCell.Value = "A/nB";
Encuentra la diferencia :-)
EDICION 2 : ¡Aaagh! Acabo de volver a leer la publicación y vi que estás usando la biblioteca Aspose. Lo siento, en ese caso no tengo ni idea.
Desde los foros de Aspose Cells: ¿Cómo usar el nuevo carácter de línea en una celda?
Después de proporcionar texto, debe establecer el estilo IsTextWrapped de la celda en true
worksheet.Cells[0, 0].Style.WrapText = true;
En realidad, es realmente simple.
Puede editar una versión xml de Excel. Edite una celda para darle una nueva línea entre su texto, luego guárdelo. Más tarde puede abrir el archivo en el editor, luego verá una nueva línea representada por
Pruebalo....
Internamente Excel usa U + 000D U + 000A (CR + LF, /r/n
) para un salto de línea, al menos en su representación XML. Tampoco pude encontrar el valor directamente en una celda. Se migró a otro archivo XML que contiene cadenas compartidas. Quizás las celdas que contienen saltos de línea se manejan de forma diferente según el formato de archivo y su biblioteca no lo sabe.
Puedes usar Chr (13). Entonces solo envuelve todo en Chr (34). Chr (34) es comillas dobles.
- Ejemplo de VB.Net:
- TheContactInfo = ""
- TheContactInfo = Trim (TheEmail) & chr (13)
- TheContactInfo = TheContactInfo & Trim (ThePhone) & chr (13)
- TheContactInfo = Chr (34) y TheContactInfo & Chr (34)
Si alguien está interesado en la solución de Infragistics, aquí está.
Utilizar
Environment.NewLine
Asegúrate de que tu celular esté envuelta
dataSheet.Rows[i].Cells[j].CellFormat.WrapText = ExcelDefaultableBoolean.True;
Usando PEAR ''Spreadsheet_Excel_Writer'' y ''OLE'':
La única forma en que podía hacer que " /n
" funcionara era haciendo que la celda $format->setTextWrap();
y luego usar " /n
" funcionaría.
SpreadsheetGear for .NET lo 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 que "WrapText = true" - Excel no ajustará el texto sin esto. Supongo que Aspose tiene API similares.
Descargo de responsabilidad: soy dueño de SpreadsheetGear LLC
cell.Text = "your firstline<br style=/"mso-data-placement:same-cell;/">your secondline";
Si obtiene el texto de DB, entonces:
cell.Text = textfromDB.Replace("/n", "<br style=/"mso-data-placement:same-cell;/">");