繁体   English   中英

使用逗号分隔问题将数据导出到C#中的excel

[英]Exporting data to excel in C# with comma delimited issue

问题不是出口本身,而是出口如何用逗号分隔字段,而我在字段中有逗号。 一切正常,直到到达字符串包含逗号的最后一个字段为止,并对其定界

我的代码:

  foreach (var item in jobSortedReportData)
  {
       sb.Append("\"").Append(item.Title).Append("\",\"").Append(item.Total).Append("\",\"").Append(item.Week6).Append("\",\"").Append(item.Week5).Append("\",\"").Append(item.Week4).Append("\",\"").Append(item.Week3).Append("\",\"").Append(item.Week2).Append("\",").Append(item.Week1).Append(Environment.NewLine);                     
  }

  byte[] textBytes2 = Encoding.UTF8.GetBytes(sb.ToString());

生成的输出:

 Number 1 Job Search    0   **Bathroom Fitter, Plumbing: 100**  Carpenter, Joinery: 99  Carpenter, Joinery: 81  Carpenter, Joinery: 209 Electrician, Domestic Electrical: 495   **Bathroom Fitter    Plumbing: 112**
 Number 2 Job Search    0   Carpenter, Joinery: 97  Bathroom Fitter, Plumbing: 99   Bathroom Fitter, Plumbing: 79   Bathroom Fitter, Plumbing: 150  Bathroom Fitter, Plumbing: 453  Builder  Window Installation: 75
 Number 3 Job Search    0   Builder, Window Installation: 85    Building Contractor, Kitchen Fitting: 97    Plumber, Bathroom Fitting: 51   Builder, Window Installation: 134   Heating Engineer, Gas Installation: 451 Bathroom Fitter  Bathroom Fitting: 74

原始视图:

"Number 3 Job Search","0","Builder, Window Installation: 85","Building Contractor, Kitchen     Fitting: 97","Plumber, Bathroom Fitting: 51","Builder, Window Installation: 134","Heating Engineer, Gas Installation: 451",Bathroom Fitter, Bathroom Fitting: 74 
"Number 1 Tradesmen Search","0","Painter & Decorator: 316","Painter & Decorator: 229","Painter & Decorator: 146","Builder: 324","TV Aerials & In-home Entertainment Installer: 1378",Electrician: 247 
"Number 2 Tradesmen Search","0","Builder: 171","Builder: 191","Plumber: 114","Plumber: 295","Builder: 551",Builder: 205 
"Number 3 Tradesmen Search","0","Plumber: 123","Plumber: 160","Builder: 108","Painter & Decorator: 231","Domestic Electrical: 495",Painter & Decorator: 160

在上面的第三栏中, "Bathroom Fitter, Plumbing: 100"包含一个,但是它将整个字符串保留在一个excel字段中。 在最后一列"Bathroom Fitter Plumbing: 112" ,FitterPlumbing之间的字符串中有一个,因此现在发生的是this,被视为一个分隔符,因此在excel中将其分成两个单元格,因此我在一个单元中安装了Bathroom Fitter ,在下一个单元中安装了Plumbing:112 整个字符串应位于一个单元格中。 它仅在最后一列上执行此操作吗? 请帮助我纠正此问题。

谢谢

很难看到原始的csv,但是要记住,如果CSV字段包含逗号以防止其认为它是列,则需要使用文本限定符。 因此原始CSV应该看起来像这样以获得一致的结果:

“浴室装配工,水暖:100”,下栏,“逗号分隔的栏”。

编辑:现在我已经看到原始的代码不应该在末尾看起来像这样吗? 我不认为您在最后一个字段上添加了文本限定符:

...Append(item.Week2).Append("\",\"").Append(item.Week1).Append("\"").Append(Environment.NewLine);

CSV输出是每个人似乎都要依靠自己的东西之一,但后来不可避免地发现有些情况他们忘记了,并希望他们只是抓住一个图书馆来为他们做。 CsvHelper(https://github.com/JoshClose/CsvHelper)是我使用的一种。 我相信这是一个很常见的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM