我产生一份报告,作为一个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的偏好“对文件本身做了些什么。”对于那些想要直接格式化导入的解决方案的人,我仍然保留这个

  1. 打开一个空白(新)文件(文件 - >工作簿中的新建)
  2. 打开导入向导(数据 - >来自文本)
  3. 选择.csv文件并导入
  4. 在对话框中,选择“分隔”,然后单击“下一步”。
  5. 选择分隔符(取消选中除“逗号”之外的所有内容),选择文本限定符(可能为{无}),单击“下一步”
  6. 数据预览字段中,选择要作为文字的列。它应该突出显示。
  7. 列数据格式字段中,选择“文字”。
  8. 点击完成。

您可以简单地将范围格式化为文本。

此外,此处是关于数字格式以及如何对其进行编程的精彩文章。

实际上我发现,至少从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并强制所有推断数据类型为字符串

我问同样的问题,然后用代码回答。

基本上当加载csv文件时,oledb驱动程序会做出假设,你可以告诉它做出什么样的假设。

我的代码强制所有数据类型为字符串...它很容易更改架构。 为了我的目的,我使用xslt来获取我想要的方式 - 但我正在解析各种各样的文件。

我知道这是一个老问题,但我有一个未列在此处的解决方案。

当您生成csv时,请在逗号之后但在您的值之前添加空格,例如,005,

无论如何,这都可以防止excel 2007中的自动日期格式化。

当导入的CSV文件在单元格中有换行符时,文本导入向导方法不起作用。此方法处理此方案(至少使用制表符分隔的数据):

  1. 创建新的Excel文件
  2. Ctrl + A选择所有单元格
  3. 在数字格式组合框中,选择文本
  4. 在文本编辑器中打开制表符分隔文件
  5. 全选,复制并粘贴到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文件中使用它时,撇号出现在您不想要的字段中。

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

只需在CSV文档中添加'之前的数字。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top