excel csv formatting number-formatting

Excel CSV-Formato de celda numérica



formatting number-formatting (16)

Yo produzco un informe como un archivo CSV. Cuando trato de abrir el archivo en Excel, hace una suposición sobre el tipo de datos basado en el contenido de la celda, y lo reformatea en consecuencia.

Por ejemplo, si el archivo CSV contiene

...,005,...

Entonces Excel lo muestra como 5. ¿Hay alguna manera de anular esto y mostrar 005?

Preferiría hacer algo con el archivo, para que el usuario simplemente haga doble clic en el archivo CSV para abrirlo.

Yo uso Excel 2003.


Agregar un espacio sin interrupciones en la celda podría ayudar. Por ejemplo: "firstvalue";"secondvalue";"005 ";"othervalue"

Obliga a Excel a tratarlo como un texto y el espacio no es visible. En Windows puede agregar un espacio sin interrupciones dando una señal alt + 0160. Consulte aquí para obtener más información: http://en.wikipedia.org/wiki/Non-breaking_space

Intenté con Excel 2010. Espero que esto ayude a las personas que todavía buscan una solución bastante adecuada para este problema.


Al abrir un archivo CSV, obtienes el asistente de importación de texto. En el último paso del asistente, debe poder importar la columna específica como texto, conservando así el prefijo ''00''. Después de eso, puede formatear la celda de la forma que desee.

Intenté con Excel 2007 y pareció funcionar.


Bueno, excel nunca aparece el asistente para los archivos CSV. Si cambia el nombre a .txt, verá el asistente cuando haga un archivo> Abrir en Excel la próxima vez.


Coloque una sola cotización antes del campo. Excel lo tratará como texto, incluso si se parece a un número.

...,`005,...

EDITAR: Esto está mal. El truco de apóstrofo solo funciona cuando se ingresan datos directamente en Excel. Cuando lo utiliza en un archivo CSV, el apóstrofo aparece en el campo, que no desea.

http://support.microsoft.com/kb/214233


Creo que al importar el archivo puede seleccionar el tipo de columna. Conviértalo en texto en lugar de en número. No tengo una copia frente a mí en este momento para comprobarlo.


De hecho, descubrí que, al menos comenzando con Office 2003, puede guardar una hoja de cálculo de Excel como un archivo XML. Por lo tanto, puedo producir un archivo XML y cuando hago doble clic en él, se abrirá en Excel. Proporciona el mismo nivel de control que SYLK, pero la sintaxis XML es más intuitiva.


El método del Asistente de importación de texto NO funciona cuando el archivo CSV que se está importando tiene saltos de línea dentro de una celda. Este método maneja este escenario (al menos con datos delimitados por tabuladores):

  1. Crear nuevo archivo de Excel
  2. Ctrl + A para seleccionar todas las celdas
  3. En el cuadro combinado de Formato numérico, seleccione Texto
  4. Abrir archivo delimitado por tabuladores en editor de texto
  5. Seleccionar todo, copiar y pegar en Excel

Esto funciona para Microsoft Office 2010, Excel Versión 14

Leí mal la preferencia del OP de "hacer algo con el archivo". Todavía mantengo esto para aquellos que quieren una solución para formatear la importación directamente

  1. Abra un archivo en blanco (nuevo) (Archivo -> Nuevo del libro de trabajo)
  2. Abra el Asistente de importación (Datos -> Desde texto)
  3. Seleccione su archivo .csv e Importe
  4. En el cuadro de diálogo, elija ''Delimitado'' y haga clic en Siguiente.
  5. Elija sus delimitadores (desmarque todo menos ''coma''), elija sus calificadores de Texto (probablemente {Ninguno}), haga clic en Siguiente
  6. En el campo Vista previa de datos , seleccione la columna que desea que sea el texto. Debe resaltar.
  7. En el campo Formato de datos de columna , seleccione ''Texto''.
  8. Haga clic en terminado.

Esto me ha estado volviendo loco todo el día (ya que de hecho no puedes controlar los tipos de columnas de Excel antes de abrir el archivo CSV), y esto funcionó para mí, usando VB.NET y Excel Interop:

''Convert .csv file to .txt file. FileName = ConvertToText(FileName) Dim ColumnTypes(,) As Integer = New Integer(,) {{1, xlTextFormat}, _ {2, xlTextFormat}, _ {3, xlGeneralFormat}, _ {4, xlGeneralFormat}, _ {5, xlGeneralFormat}, _ {6, xlGeneralFormat}} ''We are using OpenText() in order to specify the column types. mxlApp.Workbooks.OpenText(FileName, , , Excel.XlTextParsingType.xlDelimited, , , True, , True, , , , ColumnTypes) mxlWorkBook = mxlApp.ActiveWorkbook mxlWorkSheet = CType(mxlApp.ActiveSheet, Excel.Worksheet) Private Function ConvertToText(ByVal FileName As String) As String ''Convert the .csv file to a .txt file. ''If the file is a text file, we can specify the column types. ''Otherwise, the Codes are first converted to numbers, which loses trailing zeros. Try Dim MyReader As New StreamReader(FileName) Dim NewFileName As String = FileName.Replace(".CSV", ".TXT") Dim MyWriter As New StreamWriter(NewFileName, False) Dim strLine As String Do While Not MyReader.EndOfStream strLine = MyReader.ReadLine MyWriter.WriteLine(strLine) Loop MyReader.Close() MyReader.Dispose() MyWriter.Close() MyWriter.Dispose() Return NewFileName Catch ex As Exception MsgBox(ex.Message) Return "" End Try End Function


No hay una manera fácil de controlar el formato que Excel aplica al abrir un archivo .csv. Sin embargo, se enumeran a continuación tres enfoques que pueden ser útiles.

Mi preferencia es la primera opción.

Opción 1 - Cambiar los datos en el archivo

Puede cambiar los datos en el archivo .csv de la siguiente manera ..., = "005" , ... Esto se mostrará en Excel como ..., 005 , ...

Excel habrá conservado los datos como una fórmula, pero copiar la columna y usar valores especiales de pegado eliminará la fórmula, pero conservará el formato

Opción 2 : formatee los datos

Si se trata simplemente de un problema de formato y todos sus datos en esa columna tienen una longitud de tres dígitos. A continuación, abra los datos en Excel y luego formatee la columna que contiene los datos con este formato personalizado 000

Opción 3 - Cambie la extensión de archivo a .dif (formato de intercambio de datos)

Cambie la extensión de archivo y use el asistente de importación de archivos para controlar los formatos. Los archivos con extensión .dif se abren automáticamente con Excel al hacer doble clic en ellos.

Paso a paso:

  • Cambie la extensión de archivo de .csv a .dif
  • Haga doble clic en el archivo para abrirlo en Excel.
  • Se lanzará el ''Asistente de importación de archivos''.
  • Establezca el ''Tipo de archivo'' en ''Delimitado'' y haga clic en el botón ''Siguiente''.
  • En Delimiters, marque ''Coma'' y haga clic en el botón ''Siguiente''.
  • Haga clic en cada columna de sus datos que se muestran y seleccione un ''Formato de datos de columna''. La columna con el valor ''005'' debe formatearse como ''Texto''.
  • Haga clic en el botón de finalizar, Excel abrirá el archivo con los formatos que haya especificado.

No use CSV, use SYLK.
http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)

Da mucho más control sobre el formato, y Excel no intentará adivinar el tipo de campo examinando el contenido. Parece un poco complicado, pero puede salirse con la suya usando un subconjunto muy pequeño.


Sé que esta es una vieja pregunta, pero tengo una solución que no figura aquí.

Cuando produces el csv agrega un espacio después de la coma pero antes de tu valor , 005, por ejemplo , 005,

Esto funcionó para evitar el formato automático de fecha en excel 2007 de todos modos.


Simplemente agregue ''antes del número en el documento CSV.


Simplemente puede formatear su rango como Texto.

También here hay un buen artículo sobre los formatos de número y cómo puede programarlos.


Tuve este problema al exportar datos CSV del código C #, y resolví esto anteponiendo los datos iniciales cero con el carácter / t de la pestaña, por lo que los datos fueron interpretados como texto en lugar de numéricos en Excel (pero a diferencia de anteponer otros caracteres, no lo haría) se puede ver).

Me gustó el enfoque = "001", pero esto no permitirá que los datos CSV exportados se vuelvan a importar a mi aplicación C # sin eliminar todo este formato del archivo CSV de importación (en su lugar, simplemente recortaré los datos de importación) .


Cargue csv en oleDB y fuerce todos los tipos de datos inferidos a cadena

Hice la misma pregunta y luego respondí con el código.

Básicamente, cuando se carga el archivo csv, el controlador de oledb hace suposiciones, puede decirle qué suposiciones hacer.

Mi código obliga a todos los tipos de datos a la cadena ... es muy fácil cambiar el esquema. para mis propósitos usé un xslt para obtener ti de la manera que quería, pero estoy analizando una gran variedad de archivos.