【问题标题】:Disallow Excel to auto format columns while opening a .csv file禁止 Excel 在打开 .csv 文件时自动设置列格式
【发布时间】:2018-04-20 21:01:11
【问题描述】:

我正在将一些数据导出到 .csv 文件。

.csv 文件:

Hotel Name;Street;Postal Code;City;Latitude;Longitude
Hotel X;Street 1;00000;City X;15.000000;15.000000

但是如果我在 Excel 中打开它,Excel 会自动格式化纬度和经度,因此它不能用于复制和粘贴。

忽略邮政编码的 0,我必须去掉纬度和经度的 1.000

如何防止 Excel 这样做?

应该在 .csv 文件中完成,而不是在 Excel 中。

出口代码:

foreach(...)
{
    StringBuilder_Export.Append(DataRow_Temp[i] + ";");
}

StreamWriter StreamWriter_Export = new StreamWriter(
    SaveFileDialog_Geo_Export.FileName, 
    true, 
    Encoding.Default
); 

StreamWriter_Export.WriteLine(StringBuilder_Export.ToString());

编辑:我主要在寻找我的经纬度问题的解决方案。

【问题讨论】:

  • How can i prevent Excel from doing this? 导出 xlsx 而不是 CSV。

标签: c# excel csv stringbuilder streamwriter


【解决方案1】:

可能是Stop Excel from automatically converting certain text values to dates 的副本,但如果您想生成一个在打开时看起来与您完全一样的 Excel 文件,请不要使用 csv。 Excel 将始终尝试通过查看第一行(我认为是 15 行?)来猜测 csv 列的数据类型..

我使用 EPPlus 从我的应用程序中生成 xlsx 文件,但是您可以使用许多库

【讨论】:

  • 我应该只使用预装的库。我不允许下载东西:/
  • 找到一个开源的并在家下载,将其合并到您的应用程序代码中,就像您自己滚动一样.. 或者阅读代码并自己滚动 - 这是一件相对简单的事情(它们只是带有 xlsx 扩展名的 zip 文件中的 xml)
  • Im not allowed to donload stuff 除了stackoverflow之外,显然。 :P
  • 我在stackoverflow上下载什么? @mjwills
  • 严格来说,每次访问 SO 页面时,都会从堆栈溢出中下载.. 什么,你从来没有从 SO 中复制任何内容并将其粘贴到代码中?
【解决方案2】:

将其扩展名更改为 txt 并使用文本导入向导。然后用它来告诉excel应该如何处理列(文本、货币、日期等)。打开 .txt 文件时,文本导入向导将自动启动

【讨论】:

  • 我不确定这是否是问题的答案,因为它本质上将避免不良 Excel 行为的不便传递给了用户,而开发人员可以避免这种行为。如果您的网上银行允许您“在此处下载excel中的对帐单”,您是否满意,但给您发送了一个带有建议的文本文件“下载后,请使用excel中的文本导入向导导入您的对帐单数据,否则格式化将看起来一团糟”,仅仅是因为开发团队无法将其导出为更合适的格式?
  • 它是一个答案,因为它达到了预期的结果。对于 OP 来说,这是否正确是另一回事,恕我直言
  • 不是我要搜索的内容,但只要我无法在代码@CaiusJard 中修复它,它就可以正常工作
  • @ojf 按照这种逻辑,OP 还不如只向用户发送任何不相关的文件类型并告诉他们将其导入 Excel 是他们的问题? :)
  • 对于第一个客户,我可以手工完成并将编辑后的 ​​Excel 文件发送给他。但是问题没有解决……我从来没有这么说过! @CaiusJard
【解决方案3】:

当您将文件另存为 .csv 时,确保文件为 UTF-8 格式

然后打开excel,浏览选择你想要的文件,它会自动运行提示器。

utf-8 和 excel 以外的任何其他格式都会尝试自动转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    相关资源
    最近更新 更多