在我所在的公司,一个持续困扰我的问题是 Excel 会将 CSV 文件中的某些文本值解释为数字或日期。我们需要比用户更多的警惕性和远见才能防止这种情况发生,至少以他们所知道的方式。
在某些情况下(例如,如果单击“数据”>“文本到列...”),Excel 会显示类似向导的对话框序列,询问用户应如何解释不同的列。随着需要处理的列数增加,这会变得越来越耗时。此外,必须为每个 CSV 重新进行此交互,这为从一个 CSV 文件到另一个 CSV 文件出现不一致打开了大门。
我正在寻找方法来封装定期的标准 CSV 格式报告的列的数据类型规范。目标是能够避免使用交互式向导来指定列的属性,而是让 Excel 从数据类型规范中读取它们。有办法做到这一点吗?
答案1
我不知道如何指定 CSV 文件中列的数据类型。
方案 1:
确保'
对您认为麻烦的字段(列)有前导(这会使它们在 Excel 中无条件地成为文本)。
然后导入数据;使用 VBA 宏根据您的意愿设置它们。(未经审核的!)
备选方案 2:
使用 EXCEL 语法定义数据,例如=TEXT("2020-09-20","YYYY-MMM-DD")
在 CSV 文件中,而不是纯2020-09-20
(未经测试!)