2011-12-23 17 views
6

Estoy escribiendo una hoja de Excel usando la interoperabilidad. En la hoja necesito poner un conjunto de oraciones en una celda. El texto debe estar en una forma de salto de línea. ¿Cómo puedo conseguir esto?C# Interoperación de Excel, poner un salto de línea en el texto de una celda en un Excel

Gracias de antemano.

+1

no se puede asignar un ancho a la celda, luego establecer nowrap en falso? ¿O necesita descanso en línea en un lugar específico? – KMC

+0

Hola, necesito poner varias filas de datos en una celda. Y las filas deben estar separadas por filas, lo que significa que cada fila debe comenzar con una nueva fila. – Thanushka

+0

"cada fila debe comenzar con una nueva fila" ?? ¿Fila como fila/rango de celdas o nueva línea dentro de la misma celda? – KMC

Respuesta

6

Se hizo ingresando "\ r \ n" o Environment.NewLine. Y también debe recordar hacer que la propiedad WrapText sea verdadera para poder ver los frenos de línea.

+0

Es gracioso que la respuesta correcta sea downvoted. Daré +1 por esto. – Rudy

+1

mientras crea una nueva línea, coloca una pequeña casilla en el cuadrante al final de cada línea, ¿hay alguna manera de deshacerse de ella? – user1514042

+0

Hola, lo siento, no entendí eso. – Thanushka

1

La nueva línea dentro de una celda de Excel es el carácter LF, que es "\n" en C#.

0

En VB, o VBA, Solía ​​usar vbCrLf (mayúsculas y minúsculas) para separar frases para separar las líneas en la celda de un Excel como el siguiente:

Dim myString As String 
myString = "First sentence" & vbCrLf & "Second sentence" 
ActiveCell.ForumulaR1C1 = myString 

En C#, I estoy bastante seguro de que el equivalente C# de VB de vbCrLf es "\r\n", por lo tanto:

myString = "First sentence\r\n" + "Second sentence" 
-2

la respuesta a este problema es agregar un "quot" al frente y al final de la cadena que desea mostrar en su celda de Excel. En C# sería algo así como (Convert.ToChar (34) + stringToExport + Convert.ToChar (34))

+0

Desde una prueba muy rápida insertando una cadena multilínea entrecomillada (en la que los saltos de línea ya no están '\ r \ n') en Excel, esto no funciona. También esta pregunta ha tenido una respuesta aceptada durante 2 años. – OGHaza

+0

Bueno, esto funcionó bien para mí. No lo probé directamente en Excel. Estaba manejando un evento de copia en mi aplicación con un texto que contenía un \ r \ n que quería pegar en una celda exclusiva de Excel. el código anterior lo hizo funcionar. –

+0

Al leer la respuesta del OP, puede ver que su problema era que los datos ya no contenían '\ r \ n'. – OGHaza

1

La nueva línea dentro de una celda de Excel es el carácter LF, que es "\ n" en C#. Y no se olvide de establecer la propiedad WrapText de la celda en TRUE.

2

puede agregar estilo a las células programically como fuelle

worksheet.Cells.Style.WrapText = true;

0

He encontrado este problema pero la diferencia es que no tengo acceso a la hoja de trabajo en el código, ya que solo lo paso a la corriente de memoria y luego creo el archivo como tipo .csv.

foreach (var s in propertyValues) 
       streamWriter.WriteLine(s); 

      streamWriter.Flush(); 
      memoryStream.Seek(0, SeekOrigin.Begin); 

la utilizo desde aquí.

subjExportData.FileStream = stream; 
      subjExportData.FileName = string.Format("SubjectExport_{0}.csv", DateTime.Now.ToString("ddMMyyyy_HHmm")); 

Por lo tanto, la sugerencia aquí para establecer texto o ajuste de celda no es una opción. Lo conseguí trabajando usando la respuesta anterior y agregué una comilla doble antes y después del texto/cadena. El reemplazo es para manejar cuando la oración tiene una comilla doble también dentro de ella. Así que esta solución maneja, nueva línea, coma y comillas dobles dentro de una oración o párrafo.

if (value.ToString().Contains("\n")) 
           { 
            value = value.ToString().Replace("\n", "\r\n"); 
            sb.Append('"'+ value.ToString().Replace(@"""", @"""""") + '"'+ ","); 
           } 
Cuestiones relacionadas