我们正在开发的系统的最终用户将获得一个普通的 CSV 文件,最终用户将在 MS Excel 中打开该文件。其中一列将包含由数字字符串组成的条目。这些不是数字,而是标识符。我们注意到,应用于此列的默认格式会导致条目被解释为大数字,随后以科学计数法呈现。这已经是一种糟糕的用户体验 - 但等等,它会变得灾难性的。保存文件后,数据显然被解释为单精度浮点值,并且第 6 位之后的所有数字都被完全截断。如果用户在保存前更改格式以使列正确显示,则 Excel 不会出现此行为,并且数据在保存时不会损坏。
我发现,(1)更改列的格式或(2)禁用公式评估可以避免这两个问题的发生。
现在,我的问题是:在 MS Excel 中打开 CSV 类型的文件时,是否可以默认采取上述任一操作或其他一些可以防止上述问题的操作?请注意,让客户同意最终用户必须禁用所有文件(包括 Excel 格式的文件)的公式执行可能是一项不可能完成的任务。有没有办法设置全局设置?有没有办法配置如何处理 CSV?有没有办法将宏分发到用户的 Excel 安装中,并在所有打开的 CSV 文件上运行?
答案1
我发现这可以通过编写 Excel 插件来实现。打开工作簿后,我可以执行以下操作:
// set format of everything to text
Wb.ActiveSheet.UsedRange.NumberFormat = "@";
// disable further formatting - may not be necessary
Wb.ActiveSheet.EnableFormatConditionsCalculation = "false";
// for any existing cells, overwrite the formatted data with the real data, e.g., the formula
Wb.ActiveSheet.UsedRange.Value = Wb.ActiveSheet.UsedRange.Formula;
这在 Excel 2010 中对我来说有效。