587

有没有人碰巧知道我可以为某个字段添加到我的 csv 中的令牌,以便 Excel 不会尝试将其转换为日期?

我正在尝试从我的应用程序中编写一个 .csv 文件,其中一个值恰好看起来很像 Excel 自动将其从文本转换为日期的日期。我尝试将所有文​​本字段(包括看起来像日期的字段)放在双引号内,但这没有任何效果。

4

36 回答 36

380

我发现在双引号前加上一个 '=' 会完成你想要的。它强制数据为文本。

例如。="2008-10-03",="更多文字"

编辑(根据其他帖子):由于Jeffiekins 指出的 Excel 2007 错误,应该使用Andrew 提出的解决方案"=""2008-10-03"""

于 2008-10-02T23:33:21.123 回答
173

我知道这是一个老问题,但问题不会很快消失。CSV 文件很容易从大多数编程语言中生成,相当小,在使用纯文本编辑器时易于人类阅读,并且无处不在。

问题不仅在于文本字段中的日期,而且任何数字也会从文本转换为数字。几个有问题的例子:

  • 邮政编码
  • 电话号码
  • 政府身份证号码

有时可以以一个或多个零 (0) 开头,这些零在转换为数字时会被丢弃。或者该值包含可能与数学运算符混淆的字符(如日期:/、-)。

我能想到的两种情况,如前所述,“前置=”解决方案可能并不理想

  • 文件可能会被导入到 MS Excel 以外的程序中(想到 MS Word 的邮件合并功能),
  • 人类可读性可能很重要。

我解决这个问题的技巧

如果在值中预先/附加一个非数字和/或非日期字符,则该值将被识别为文本并且不进行转换。非打印字符会很好,因为它不会改变显示的值。但是,普通的旧空格字符(\s,ASCII 32)对此不起作用,因为它被 Excel 截断,然后值仍然被转换。但是还有其他各种打印和非打印空格字符可以很好地工作。然而,最简单的方法附加(添加)简单的制表符(\t,ASCII 9)。

这种方法的好处:

  • 可从键盘或易于记忆的 ASCII 码 (9) 获得,
  • 它不打扰进口,
  • 通常不会影响邮件合并结果(取决于模板布局 - 但通常它只是在行尾添加一个宽阔的空间)。(如果这是一个问题,请查看其他字符,例如零宽度空格(ZWSP,Unicode U+200B)
  • 在记事本(等)中查看 CSV 时不是很大的障碍,
  • 并且可以通过在 Excel(或记事本等)中查找/替换来删除。
  • 您无需导入CSV,只需双击即可在 Excel中打开CSV。

如果出于某种原因您不想使用该选项卡,请在 Unicode 表中查找其他合适的内容。

另外一个选项

可能是生成 XML 文件,较新的 MS Excel 版本也接受某种格式的导入,并且允许更多类似于 .XLS 格式的选项,但我没有这方面的经验。

所以有多种选择。根据您的要求/应用程序,一个可能比另一个更好。


添加

需要说的是,MS Excel 的较新版本(2013+)不再以电子表格格式打开 CSV - 工作流程中的另一个加速器使 Excel 变得不那么有用......至少,存在绕过它的说明。参见例如这个 Stackoverflow:如何在 Excel 2013 中正确显示 .csv 文件? .

于 2013-02-27T08:16:41.577 回答
104

根据 Jarod 的解决方案和 Jeffiekins 提出的问题,您可以修改

"May 16, 2011"

"=""May 16, 2011"""
于 2011-05-16T21:48:35.250 回答
70

我有一个类似的问题,这是帮助我无需编辑 csv 文件内容的解决方法:

如果您可以灵活地将文件命名为“.csv”以外的名称,则可以使用“.txt”扩展名来命名,例如“Myfile.txt”或“Myfile.csv.txt”。然后当您在 Excel 中打开它时(不是通过拖放,而是使用文件->打开或最近使用的文件列表),Excel 将为您提供“文本导入向导”。

在向导的第一页中,为文件类型选择“分隔”。

在向导的第二页中,选择“,”作为分隔符,如果您的值用引号括起来,还选择文本限定符

在第三页中,分别选择每一列,并为每一列分配“文本”而不​​是“常规”类型,以阻止 Excel 弄乱您的数据。

希望这可以帮助您或遇到类似问题的人!

于 2013-02-21T05:06:50.417 回答
29

警告:Excel '07(至少)有一个(另一个)错误:如果字段的内容中有逗号,它不会正确解析 ="field, contents",而是将逗号后面的所有内容放入后面的字段,不管引号。

我发现唯一可行的解​​决方法是在字段内容包含逗号时消除 = 。

这可能意味着有些字段无法在 Excel 中完全“正确”表示,但现在我相信没有人会感到惊讶。

于 2010-12-10T19:58:59.950 回答
27

2018

唯一适合我的解决方案(也无需修改 CSV)。

Excel 2010:

  1. 创建新工作簿
  2. 数据 > 从文本 > 选择您的 CSV 文件
  3. 在弹出窗口中,选择“分隔”单选按钮,然后单击“下一步>”
  4. 分隔符复选框:仅勾选“逗号”并取消选中其他选项,然后单击“下一步>”
  5. 在“数据预览”中,滚动到最右侧,然后按住 shift 并单击最后一列(这将选择所有列)。现在在“列数据格式”中选择单选按钮“文本”,然后单击“完成”。

Excel office365:(客户端版本)

  1. 创建新工作簿
  2. 数据 > 从文本/CSV > 选择您的 CSV 文件
  3. 数据类型检测 > 不检测

注意: Excel office365(网络版),当我写这篇文章时,你将无法做到这一点。

于 2018-08-12T07:59:04.800 回答
24

在 C# 中创建要写入我的 CSV 文件的字符串时,我必须以这种方式对其进行格式化:

"=\"" + myVariable + "\""
于 2014-04-21T13:09:04.123 回答
17

在 Excel 2010 中打开一个新工作表。在数据功能区上单击“从文本获取外部数据”。选择您的 CSV 文件,然后单击“打开”。点击下一步”。取消选中“选项卡”,在“逗号”旁边打上复选标记,然后单击“下一步”。单击第一列的任意位置。按住 shift 键的同时拖动滑块直到您可以单击最后一列,然后松开 shift 键。单击“文本”单选按钮,然后单击“完成”

所有列都将作为文本导入,就像它们在 CSV 文件中一样。

于 2014-02-06T21:15:58.137 回答
13

在 Microsoft Office 2016 版本中仍然是一个问题,对于我们这些使用诸如 MARC1、MARCH1、SEPT1 等基因名称的人来说相当令人不安。我发现在 R 中生成“.csv”文件后最实用的解决方案,然后将与 Excel 用户打开/共享:

  1. 以文本形式打开 CSV 文件(记事本)
  2. 复制它(ctrl+a,ctrl+c)。
  3. 将其粘贴到新的 Excel 工作表中 - 它将全部粘贴在一列中作为长文本字符串。
  4. 选择/选择此列。
  5. 转到数据-“文本到列...”,在打开的窗口中选择“分隔”(下一个)。检查是否标记了“逗号”(标记它已经将数据显示到下面的列中)(下一步),在此窗口中您可以选择所需的列并将其标记为文本(而不是一般)(完成)。

高温高压

于 2015-11-30T17:35:45.667 回答
11

这是我们在工作中首先生成 csv 文件时使用的简单方法,它确实会稍微改变值,因此它并不适合所有应用程序:

为 csv 中的所有值添加一个空格

该空间将被 Excel 从“1”、“2.3”和“-2.9e4”等数字中删除,但将保留在“01/10/1993”等日期和“TRUE”等布尔值上,阻止它们被转换为excel的内部数据类型。

它还可以阻止在读入时使用双引号,因此即使像“3.1415”这样的文本是用双引号括起来并在整个字符串前面加上空格,excel 保持 csv 中文本保持不变的万无一失的方法,即(使用单引号显示您将键入的内容)'“3.1415”'。然后在excel中你总是有原始字符串,除了它用双引号括起来并用空格前置,所以你需要考虑任何公式等中的那些。

于 2013-01-28T18:05:52.803 回答
8

(假设 Excel 2003 ......)

使用 Text-to-Columns 向导时,在第 3 步中,您可以指定每个列的数据类型。单击预览中的列,将行为不端的列从“常规”更改为“文本”。

于 2008-10-02T23:34:08.877 回答
8

这是我知道如何在不弄乱文件本身的情况下完成此操作的唯一方法。像往常一样使用 Excel,我通过在桌子上敲了几个小时的头来学习这一点。

将.csv文件扩展名改为.txt;这将阻止 Excel 在打开文件时自动转换文件。我是这样做的:将 Excel 打开到空白工作表,关闭空白表,然后 File => Open 并选择扩展名为 .txt 的文件。这会强制 Excel 打开“文本导入向导”,它会在其中询问您希望它如何解释文件的问题。首先选择分隔符(逗号、制表符等),然后(这是重要部分)选择一组列并选择格式。如果您想要文件中的确切内容,请选择“文本”,Excel 将仅显示分隔符之间的内容。

于 2013-08-27T15:08:03.963 回答
5

(EXCEL 2007 及更高版本)

如何在不编辑源文件的情况下强制 excel 不“检测”日期格式

任何一个:

  • 将文件重命名为 .txt
  • 如果您不能这样做,请不要直接在 excel 中打开 CSV 文件,而是创建一个新工作簿,然后转到
    Data > Get external data > From Text
    并选择您的 CSV。

无论哪种方式,您都会看到导入选项,只需选择包含日期的每一列并告诉 excel 格式化为“文本”而不​​是“一般”。

于 2015-09-17T09:39:27.807 回答
5

我为同样的问题所做的是在每个 csv 值之前添加以下内容:"=""" 并在每个 CSV 值之后添加一个双引号,然后在 Excel 中打开文件。以以下值为例:

012345,00198475

在 Excel 中打开之前,应将这些更改为:

"="""012345","="""00198475"

执行此操作后,每个单元格值在 Excel 中显示为公式,因此不会格式化为数字、日期等。例如,值 012345 显示为:

="012345"
于 2015-12-08T01:12:13.523 回答
5

这里提供的解决方案都不是一个好的解决方案。它可能适用于个别情况,但前提是您可以控制最终显示。以我为例:我的工作产生了他们出售给零售的产品清单。这是 CSV 格式并包含零件代码,其中一些以零开头,由制造商设置(不受我们控制)。去掉前导零,您实际上可能会匹配另一个产品。零售客户需要 CSV 格式的列表,因为后端处理程序也是我们无法控制的,并且每个客户都不同,因此我们无法更改 CSV 文件的格式。没有前缀'=',也没有添加标签。原始 CSV 文件中的数据是正确的;当客户在 Excel 中打开这些文件时,问题就开始了。许多客户并不真正精通计算机。他们几乎可以打开并保存电子邮件附件。我们正在考虑以两种略有不同的格式提供数据:一种作为 Excel 友好格式(使用上面建议的选项,添加一个 TAB,另一种作为“主”格式。但这可能是一厢情愿的想法,因为有些客户不明白为什么我们需要这样做。与此同时,我们继续解释为什么他们有时会在电子表格中看到“错误”的数据。在微软做出适当的改变之前,我认为没有适当的解决方案,只要人们无法控制最终用户的方式使用文件。但这可能是一厢情愿的想法,因为一些客户不会理解我们为什么需要这样做。同时,我们继续解释为什么他们有时会在电子表格中看到“错误”的数据。在微软做出适当的改变之前,我认为没有适当的解决方案,只要人们无法控制最终用户如何使用这些文件。但这可能是一厢情愿的想法,因为一些客户不会理解我们为什么需要这样做。同时,我们继续解释为什么他们有时会在电子表格中看到“错误”的数据。在微软做出适当的改变之前,我认为没有适当的解决方案,只要人们无法控制最终用户如何使用这些文件。

于 2017-11-30T10:59:29.860 回答
4

本周我遇到了这个约定,这似乎是一个很好的方法,但我在任何地方都找不到它的引用。有人熟悉吗?你能引用它的来源吗?我已经找了好几个小时了,但我希望有人会认可这种方法。

示例 1: =("012345678905") 显示为012345678905

示例 2: =("1954-12-12") 显示为1954-12-12,而不是12/12/1954

于 2013-06-13T00:34:45.197 回答
4

你好我也有同样的问题

我写这个 vbscipt 来创建另一个 CSV 文件。新的 CSV 文件在每个字段的字体中都会有一个空格,因此 excel 会将其理解为文本。

因此,您使用以下代码创建一个 .vbs 文件(例如 Modify_CSV.vbs),保存并关闭它。将您的原始文件拖放到您的 vbscript 文件中。它将在同一位置创建一个带有“SPACE_ADDED”文件名的新文件。

Set objArgs = WScript.Arguments

Set objFso = createobject("scripting.filesystemobject")

dim objTextFile
dim arrStr ' an array to hold the text content
dim sLine  ' holding text to write to new file

'Looping through all dropped file
For t = 0 to objArgs.Count - 1
    ' Input Path
    inPath = objFso.GetFile(wscript.arguments.item(t))

    ' OutPut Path
    outPath = replace(inPath, objFso.GetFileName(inPath), left(objFso.GetFileName(inPath), InStrRev(objFso.GetFileName(inPath),".") - 1) & "_SPACE_ADDED.csv")

    ' Read the file
    set objTextFile = objFso.OpenTextFile(inPath)


    'Now Creating the file can overwrite exiting file
    set aNewFile = objFso.CreateTextFile(outPath, True) 
    aNewFile.Close  

    'Open the file to appending data
    set aNewFile = objFso.OpenTextFile(outPath, 8) '2=Open for writing 8 for appending

    ' Reading data and writing it to new file
    Do while NOT objTextFile.AtEndOfStream
        arrStr = split(objTextFile.ReadLine,",")

        sLine = ""  'Clear previous data

        For i=lbound(arrStr) to ubound(arrStr)
            sLine = sLine + " " + arrStr(i) + ","
        Next

        'Writing data to new file
        aNewFile.WriteLine left(sLine, len(sLine)-1) 'Get rid of that extra comma from the loop


    Loop

    'Closing new file
    aNewFile.Close  

Next ' This is for next file

set aNewFile=nothing
set objFso = nothing
set objArgs = nothing
于 2014-02-20T06:37:30.767 回答
2

它不是 Excel。Windows 确实将公式、数据识别为日期并自动更正。您必须更改 Windows 设置。

“控制面板”(->“切换到经典视图”)->“区域和语言选项”->选项卡“区域选项”->“自定义...”->选项卡“数字”->然后更改符号根据你想要的。

http://www.pcreview.co.uk/forums/enable-disable-auto-convert-number-date-t3791902.html

它将在您的计算机上运行,​​如果这些设置没有更改,例如在您客户的计算机上,他们将看到日期而不是数据。

于 2014-05-08T11:51:32.437 回答
2

在不修改 csv 文件的情况下,您可以:

  1. 将excel单元格格式选项更改为“文本”
  2. 然后使用“文本导入向导”来定义 csv 单元格。
  3. 导入后删除该数据
  4. 然后粘贴为纯文本

excel 将正确格式化并将您的 csv 单元格分隔为文本格式,忽略自动日期格式。

一种愚蠢的解决方法,但它胜过在导入之前修改 csv 数据。Andy Baird 和 Richard 有点逃避这种方法,但错过了几个重要步骤。

于 2015-03-30T19:00:02.477 回答
2

在我的例子中,使用 R 生成的 csv 文件中的“Sept8”被 Excel 2013 转换为“8-Sept”。通过使用 xlsx 包中的 write.xlsx2() 函数生成 xlsx 格式的输出文件,解决了这个问题, 可以由 Excel 加载而无需进行不必要的转换。因此,如果给您一个 csv 文件,您可以尝试将其加载到 R 中并使用 write.xlsx2() 函数将其转换为 xlsx。

于 2016-02-29T02:43:30.000 回答
1

我知道这是一个旧线程。对于像我这样通过 PowerShell COM 对象使用 Office 2013 仍然存在此问题的人,可以使用opentext 方法。问题是这种方法有很多参数,有时是互斥的。要解决此问题,您可以使用本文介绍invoke-namedparameter方法。一个例子是

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

不幸的是,我刚刚发现当单元格包含换行符时,这种方法会以某种方式破坏 CSV 解析。CSV 支持这一点,但微软的实现似乎有问题。它也不知何故没有检测到德语特有的字符。给它正确的文化并没有改变这种行为。所有文件(CSV 和脚本)都以 utf8 编码保存。首先,我编写了以下代码来逐个插入 CSV 单元格。

$ex = New-Object -com "Excel.Application"
$ex.visible = $true;
$csv = "path\to\your\csv.csv";
$ex.workbooks.add();
$ex.activeWorkbook.activeSheet.Cells.NumberFormat = "@";
$data = import-csv $csv -encoding utf8 -delimiter ";"; 
$row = 1; 
$data | %{ $obj = $_; $col = 1; $_.psobject.properties.Name |%{if($row -eq1){$ex.ActiveWorkbook.activeSheet.Cells.item($row,$col).Value2= $_ };$ex.ActiveWorkbook.activeSheet.Cells.item($row+1,$col).Value2 =$obj.$_; $col++ }; $row++;}

但这非常慢,这就是我寻找替代方案的原因。显然,Excel 允许您使用矩阵设置一系列单元格的值。所以我使用这个博客中的算法将 CSV 转换为多数组。

function csvToExcel($csv,$delimiter){
     $a = New-Object -com "Excel.Application"
     $a.visible = $true
     
    $a.workbooks.add()
     $a.activeWorkbook.activeSheet.Cells.NumberFormat = "@"
     $data = import-csv -delimiter $delimiter $csv; 
     $array = ($data |ConvertTo-MultiArray).Value
     $starta = [int][char]'a' - 1
     if ($array.GetLength(1) -gt 26) {
         $col = [char]([int][math]::Floor($array.GetLength(1)/26) + $starta) + [char](($array.GetLength(1)%26) + $Starta)
     } else {
         $col = [char]($array.GetLength(1) + $starta)
     }
     $range = $a.activeWorkbook.activeSheet.Range("a1:"+$col+""+$array.GetLength(0))
     $range.value2 = $array;
     $range.Columns.AutoFit();
     $range.Rows.AutoFit();
     $range.Cells.HorizontalAlignment = -4131
     $range.Cells.VerticalAlignment = -4160
}

 function ConvertTo-MultiArray {
     param(
         [Parameter(Mandatory=$true, Position=1, ValueFromPipeline=$true)]
         [PSObject[]]$InputObject
     )
     BEGIN {
         $objects = @()
         [ref]$array = [ref]$null
     }
     Process {
         $objects += $InputObject
     }
     END {
         $properties = $objects[0].psobject.properties |%{$_.name}
         $array.Value = New-Object 'object[,]' ($objects.Count+1),$properties.count
         # i = row and j = column
         $j = 0
         $properties |%{
             $array.Value[0,$j] = $_.tostring()
             $j++
         }
         $i = 1
         $objects |% {
             $item = $_
             $j = 0
             $properties | % {
                 if ($item.($_) -eq $null) {
                     $array.value[$i,$j] = ""
                 }
                 else {
                     $array.value[$i,$j] = $item.($_).tostring()
                 }
                 $j++
             }
             $i++
         }
         $array
     } 
} 
csvToExcel "storage_stats.csv" ";"

您可以按原样使用上面的代码;它应该将任何 CSV 转换为 Excel。只需更改 CSV 的路径和底部的分隔符即可。

于 2015-04-17T08:19:32.917 回答
1

最简单的解决方案我今天才发现。

  • 在 Word 中打开
  • 用破折号替换所有连字符
  • 保存并关闭
  • 在 Excel 中打开

完成编辑后,您可以随时在 Word 中重新打开它,以再次用连字符替换短划线。

于 2015-08-12T15:10:26.337 回答
1

使用 Google Drive(或 Numbers,如果您在 Mac 上)的解决方法:

  1. 在 Excel 中打开数据
  2. 将数据不正确的列的格式设置为文本(格式>单元格>数字>文本)
  3. 将 .csv 加载到 Google Drive,然后使用 Google Sheets 打开它
  4. 复制有问题的列
  5. 将列作为文本粘贴到 Excel 中(编辑 > 选择性粘贴 > 文本)

或者,如果您在 Mac 上执行第 3 步,您可以在 Numbers 表格中打开数据。

于 2017-12-19T22:00:59.487 回答
1

(EXCEL 2016及以后,其实老版本我没试过)

  1. 打开新的空白页
  2. 转到选项卡“数据”
  3. 单击“来自文本/CSV”并选择您的 csv 文件
  4. 在预览中检查您的数据是否正确。
  5. 如果某些列被转换为日期,请单击“编辑”,然后通过单击列头中的日历来选择文本类型
  6. 点击“关闭并加载”
于 2018-06-27T09:45:43.593 回答
1

如果有人仍在寻找答案,那么下面的行对我来说非常有用

我进入了=("my_value")
=("04SEP2009")显示为04SEP2009不像09/04/2009

这同样适用于超过 15 位的整数。他们不再被修剪了。

于 2021-01-20T17:42:44.237 回答
0

好的,在 Excel 2003 到 2007 中找到了一种简单的方法。打开一个空白的 xls 工作簿。然后进入数据菜单,导入外部数据。选择您的 csv 文件。通过向导,然后在“列数据格式”中选择任何需要强制为“文本”的列。这会将整个列作为文本格式导入,以防止 Excel 尝试将任何特定单元格视为日期。

于 2014-05-06T01:14:02.667 回答
0

Mac Office 2011 和 Office 2013 中仍然存在此问题,我无法阻止它发生。这似乎是一个基本的事情。

在我的情况下,我在用逗号正确括起来的 CSV 中有诸如“1 - 2”和“7 - 12”之类的值,这会自动转换为 excel 中的日期,如果您随后尝试将其转换为纯文本,您会得到日期的数字表示,例如 43768。此外,它将条形码和 EAN 数字中的大数字重新格式化为无法转换回的 123E+ 数字。

我发现 Google Drive 的 Google Sheets 不会将数字转换为日期。条形码中每 3 个字符都有逗号,但这些很容易删除。它处理 CSV 非常好,尤其是在处理 MAC / Windows CSV 时。

有时可能会救人。

于 2015-05-21T10:45:48.733 回答
0

我对不断转换为科学记数法的信用卡号执行此操作:我最终将我的 .csv 导入 Google 表格。导入选项现在允许禁用数值的自动格式化。我将任何敏感列设置为纯文本并下载为 xlsx。

这是一个糟糕的工作流程,但至少我的价值观保持原样。

于 2016-08-16T20:09:22.067 回答
0

我制作了这个 VBA 宏,它基本上在粘贴数字之前将输出范围格式化为文本。当我想粘贴诸如 8/11、23/6、1/3 等值而不用 Excel 将它们解释为日期时,它非常适合我。

Sub PasteAsText()
' Created by Lars-Erik Sørbotten, 2017-09-17
Call CreateSheetBackup
    
Columns(ActiveCell.Column).NumberFormat = "@"
    
Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
DataObj.GetFromClipboard

ActiveCell.PasteSpecial

End Sub

我很想知道这是否也适用于其他人。我一直在寻找解决这个问题的方法,但我还没有看到不包括'在输入文本前面插入的快速 VBA 解决方案。此代码以原始形式保留数据。

于 2017-09-17T16:04:02.703 回答
0

如果可以更改文件源数据

如果您准备更改原始源 CSV 文件,另一种选择是更改数据中的“分隔符”,因此如果您的数据是“4/11”(或 4-11)并且 Excel 会将其转换为 4/11 /2021(英国或 11-4-2021 美国),然后将“/”或“-”字符更改为其他字符将阻止不需要的 Excel 日期转换。选项可能包括:

  • 波浪号 ('~')
  • 加号('+')
  • 下划线('_')
  • 双破折号 ('--')
  • 破折号(Alt 150)
  • 破折号(Alt 151)
  • (其他角色!)

注意:如果文件要在其他地方使用,移动到 Unicode 或其他非 ascii/ansi 字符可能会使事情复杂化。

因此,将 '4-11' 转换为带有波浪号的 '4~11' 不会被视为日期!

对于大型 CSV 文件,这没有额外的开销(即:额外的引号/空格/制表符/公式结构),并且仅在直接打开文件时起作用(即:双击 CSV 以打开)并避免将列预先格式化为文本或将 CSV 文件作为文本“导入”。

如有必要,记事本(或类似工具)中的搜索/替换可以轻松转换为替代分隔符/从替代分隔符转换。

导入原始数据

在较新版本的 Excel 中,您可以导入数据(在其他答案中概述)。在旧版本的 Excel 中,您可以安装“Power Query”加载项。此工具还可以在不转换的情况下导入 CSV。选择:Power Query 选项卡/来自文件/来自 Text-CSV,然后“加载”以作为表格打开。(您可以从“数据类型检测”选项中选择“不检测数据类型”)。

于 2021-07-26T22:28:34.377 回答
-1

另一种方法:

将要更改的列的格式转换为“文本”。选择要保留的所有单元格,复制。在不取消选择这些列的情况下,单击“编辑 > 选择性粘贴 > 作为值”

另存为 CSV。请注意,这必须是您对文件执行的最后一件事,因为当您重新打开它时,它会将自身格式化为日期,因为单元格格式无法保存在 CSV 文件中。

于 2008-10-02T23:43:02.067 回答
-1

将表格粘贴到 word 中。进行搜索/替换并将所有 - (破折号)更改为 -- (双破折号)。复制并粘贴到 Excel 中。可以对其他符号 (/) 等执行相同操作。如果需要在 Excel 中更改回破折号,只需将该列格式化为文本,然后进行更改。希望这可以帮助。

于 2015-10-24T19:46:00.230 回答
-2

如果在字段的开头放置一个逗号,它将被解释为文本。

例子: 25/12/2008变成'25/12/2008

您还可以在导入时选择字段类型。

于 2008-10-02T23:33:00.547 回答
-2

双引号中的空格前缀解决了这个问题!

我在 .csv 文件列之一中有类似“7/8”的数据,MS-Excel 将其转换为日期为“07-Aug”。但是使用“LibreOffice Calc”没有问题。

为了解决这个问题,我只是为空格字符(在 7 之前添加了空格)添加了前缀,例如“7/8”,它对我有用。这是针对 Excel-2007 测试的。

于 2014-10-21T15:19:51.317 回答
-4
SELECT CONCAT('\'',NOW(),'\''), firstname, lastname 
FROM your_table
INTO OUTFILE 'export.csv' 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '\"' 
LINES TERMINATED BY '\n'
于 2011-02-24T08:10:04.973 回答
-5

CSV - 逗号分隔值。只需通过文本编辑器而不是 xls/xlsx/exel 创建/编辑。在编辑中,您可以将日期设置为所需的格式,并且必须保持原样。这是假设随后以编程方式处理相同的文件。

于 2013-05-03T05:55:30.500 回答