Excel CSV数量单元格式
-
02-07-2019 - |
题
我产生一份报告,作为一个CSV文件。当我试着打开文件,在Excel中,它使得一个假设有关数据类型的基础上单元的内容,并重新格式化。
例如,如果CSV文件包含
...,005,...
然后Excel表示它为5。有没有办法替代这并显示005?
我宁愿做一些文件本身,使用户可能仅仅是双击CSV文件,打开它。
我使用Excel2003年。
解决方案
没有一个简单的方法来控制的格式Excel应用时打开.csv文件。但是下面列出的三种办法,可能会有帮助。
我的偏爱是第一个选项。
备选1--改变中的数据文件
你可以改变的数据。csv文件如下...,=”005”,...这将能在Excel中显示为...,005,...
Excel将有保留的数据作为一个公式,但复制列和使用粘贴特别值将摆脱式,但保留的格式
备选案文2 –格式的数据
如果它是一个简单的格式的问题和所有你的数据,列有三位数的长度。然后打开的Excel数据,然后格式列包含的数据与这一定义的格式 000
选项3 –改变该文件的扩展。dif(数据交换格式)
更改该文件的扩展和使用的文件导入控制的格式。文件a。dif扩展自动打开Excel当双击。
一步步骤:
- 更改该文件的扩展 .csv 要 .dif
- 双击在文件上打开它。
- 该文件导入'将被启动。
- 设置'的文件的类型'到'隔'和单击"下一步"。
- 在符,勾'逗号',并点击的"下一步"。
- 点击每列数据显示,选择列的数据格式'.列有价值'005'的格式应为"文本".
- 点击完成,该文件将由Excel格式,你已经指定。
其他提示
不要使用CSV,请使用SYLK。
http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)
它提供了对格式化的更多控制,Excel不会通过检查内容来尝试猜测字段的类型。它看起来有点复杂,但你可以使用一个非常小的子集。
适用于Microsoft Office 2010,Excel版本14
我误读了OP的偏好“对文件本身做了些什么。”对于那些想要直接格式化导入的解决方案的人,我仍然保留这个
- 打开一个空白(新)文件(文件 - >工作簿中的新建)
- 打开导入向导(数据 - >来自文本)
- 选择.csv文件并导入
- 在对话框中,选择“分隔”,然后单击“下一步”。
- 选择分隔符(取消选中除“逗号”之外的所有内容),选择文本限定符(可能为{无}),单击“下一步”
- 在数据预览字段中,选择要作为文字的列。它应该突出显示。
- 在列数据格式字段中,选择“文字”。
- 点击完成。
醇>
您可以简单地将范围格式化为文本。
此外,此处是关于数字格式以及如何对其进行编程的精彩文章。
实际上我发现,至少从Office 2003开始,您可以将Excel电子表格另存为XML文件。 因此,我可以生成一个XML文件,当我双击它时,它将在Excel中打开。 它提供与SYLK相同的控制级别,但XML语法更直观。
在单元格中添加不间断的空间可能有所帮助。 例如: <代码>&QUOT; firstvalue英寸;&QUOT; secondvalue英寸;&QUOT; 005&NBSP;英寸;&QUOT; othervalue&QUOT; 代码>
它强制Excel将其视为文本,并且空间不可见。 在Windows上,您可以通过tiping alt + 0160添加不间断的空间。 有关详细信息,请参阅此处: http://en.wikipedia.org/wiki/Non-breaking_space一>
尝试使用Excel 2010。 希望这可以帮助仍然为这个问题寻找一个非常合适的解决方案的人。
我有这个问题时,出口CSV数据从C#码,并决心通过前添加导致零的数据与签字 ,因此数据被解释为文本,而不是数字在Excel中(然而,与前添加其他角色,它不会被看见).
我不喜欢这="001"的方法,但这不允许出口CSV数据被重新进口再次对我的C#应用程序而不消除所有这一格式将CSV文件(而不是我只是修剪的进口数据)。
我相信在导入文件时,您可以选择列类型。使其成为文本而不是数字。我现在面前没有副本可以查看。
我问同样的问题,然后用代码回答。
基本上当加载csv文件时,oledb驱动程序会做出假设,你可以告诉它做出什么样的假设。
我的代码强制所有数据类型为字符串...它很容易更改架构。 为了我的目的,我使用xslt来获取我想要的方式 - 但我正在解析各种各样的文件。
我知道这是一个老问题,但我有一个未列在此处的解决方案。
当您生成csv时,请在逗号之后但在您的值之前添加空格,例如,005,
。
无论如何,这都可以防止excel 2007中的自动日期格式化。
当导入的CSV文件在单元格中有换行符时,文本导入向导方法不起作用。此方法处理此方案(至少使用制表符分隔的数据):
- 创建新的Excel文件
- Ctrl + A选择所有单元格
- 在数字格式组合框中,选择文本
- 在文本编辑器中打开制表符分隔文件
- 全选,复制并粘贴到Excel 醇>
这让我整天疯狂(因为在打开CSV文件之前确实无法控制Excel列类型),这对我有用,使用VB.NET和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
打开CSV时,您将获得文本导入向导。在向导的最后一步,您应该能够将特定列作为文本导入,从而保留“00”前缀。之后,您可以按照您想要的任何方式格式化单元格。
我尝试使用Excel 2007,它似乎有效。
好吧,excel永远不会弹出CSV文件的向导。如果将其重命名为.txt,则在下次执行文件&gt;在Excel中打开时,您将看到向导。
在字段前加一个引号。 Excel会将其视为文本,即使它看起来像数字。
...,`005,...
编辑:这是错误的。撇号技巧仅在将数据直接输入Excel时有效。在CSV文件中使用它时,撇号出现在您不想要的字段中。
只需在CSV文档中添加'之前的数字。