请问是否有一种标记可以添加到我的csv文件中的某个字段,使得Excel不会尝试将其转换为日期格式?
我正在尝试从我的应用程序写入一个.csv文件,其中一个值看起来非常像日期,因此Excel自动将它从文本转换为日期格式。我尝试将所有文本字段(包括看起来像日期的字段)放在双引号内,但这没有任何效果。
请问是否有一种标记可以添加到我的csv文件中的某个字段,使得Excel不会尝试将其转换为日期格式?
我正在尝试从我的应用程序写入一个.csv文件,其中一个值看起来非常像日期,因此Excel自动将它从文本转换为日期格式。我尝试将所有文本字段(包括看起来像日期的字段)放在双引号内,但这没有任何效果。
如果你在字段的开头放一个倒引号,它会被解释为文本。
例子:
25/12/2008
变成 '25/12/2008
在导入时,你也可以选择字段类型。
另一种方法:
将要更改的列的格式转换为“文本”。选择要保留的所有单元格,复制。在未取消选定这些列的情况下,单击“编辑>粘贴特殊>作为值”
保存为CSV。请注意,这必须是您对该文件执行的最后一项操作,因为重新打开它时,它会将自己格式化为日期,因为单元格格式无法保存在CSV文件中。
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解决方案,而不需要在输入文本前插入'
。这段代码保留了数据的原始形式。
如果你正在使用Javascript并尝试上传带有单元格值Martin18或任何带有数字的字符串,它会在JSON中显示一些日期值。
解决方案:
const bstr = event.target.result;
const wb = XLSX.read(bstr, { type: 'string', raw: true });
/* Get first worksheet */
const wsname = wb.SheetNames[0];
const ws = wb.Sheets[wsname];
/* Convert array of arrays */
const data = XLSX.utils.sheet_to_json(ws, { header: 1, defval: ''});
对我来说有效 :)
解决方案来源:https://github.com/SheetJS/sheetjs/issues/940
在双引号中添加空格前缀解决了该问题!!
我在一个 .csv 文件列中有"7/8"这样的数据,而 MS-Excel 将其转换为日期格式 "07-Aug"。但是使用 "LibreOffice Calc" 没有问题。
为了解决这个问题,我只需在数字 7 前添加空格字符(即在 7 前加上空格),如" 7/8",就可以顺利解决。这已经在 Excel-2007 中进行测试过。
SELECT CONCAT('\'',NOW(),'\''), firstname, lastname
FROM your_table
INTO OUTFILE 'export.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\n'