【问题标题】:How to pragmatically set the excel number format to text for a csv file?如何务实地将 excel 数字格式设置为 csv 文件的文本?
【发布时间】:2014-09-24 11:26:58
【问题描述】:

我正在用一些程序编写一个 csv 文件。

当我在 excel 文件中打开它时遇到问题,如果某些列的值超过 256,它会自动截断它。

我了解到,默认情况下,excel 的数字格式为 TO 'GENERAL',如果我可以将其设置为 'TEXT',那么它不会截断任何部分。

那么有没有任何编程方式可以将数字格式从GENERAL 设置为TEXT

【问题讨论】:

  • 我认为你有一个不同的问题,Excel当然可以读取其中值超过256的CSV文件。请向我们展示您的 CSV 文件的几行。
  • 不确定这与 C# 有什么关系。
  • @MarkSetchell:你的意思是你想看到的代码。我是如何在 csv 文件中做到这一点的。
  • 我的意思是你应该点击问题下方的edit 并粘贴 2-3 行 Excel 无法正确导入的实际 CSV。

标签: c# excel csv


【解决方案1】:

是纯文本格式。您不能将列处理等元数据嵌入到该文件格式中。

如果您不希望 截断该列,那么您需要在写出 文件时自己截断它:

 var csvFileBuffer = new StringBuilder();

 var columns = new List<string>();

 csvFileBuffer.AppendLine(
     string.Join(
         ",",
         columns.Select(s => 
              //truncate column header (change logic as appropriate)
              s.Substring(0, 255))));

也就是说,您可以在 中设置一个选项,该选项将更改 csv 文件的默认列类型。但是,这将是SuperUser.com 的问题

另一种选择是写入本机 excel 文件格式,例如 xlsx。您可以使用许多工具,例如Open Xml Sdk

【讨论】:

  • 不,默认情况下,excel 会截断 255 之前的文本,我不希望它被截断。我想要所有数据。
  • 您无法通过向 `.csv' 文件中添加魔术字符串来实现这一目标
猜你喜欢
  • 2015-11-08
  • 2018-01-17
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多