C#创建一个CSV文件,以便一个字段的内容包含在一个单元格中

时间:2011-11-10 16:42:14

标签: c# excel

我有两个数据库,一个是主数据库,一个是详细信息, table1是master,table2是detail。 table2包含评论添加时的注释和日期。

我的问题: 我必须导出一个CSV文件(C#)并在一个字段中包含所有注释。 我可以这样做,但是我的老板正在将它导入excel并且希望在每个注释的末尾都有一个回车符(或其他东西),以便它们包装在一个单元格中

评论的格式如下:“ 11/10/201:comment1 11/10/2011:评论二

当它被导入到excel时我想评论自动换行,所以它们在excel单元格中看起来像这样:

11/10/2011:comment1 11/10/2011:评论二

我尝试 \ r \ n ,但然后将评论放入单独的单元格中。

任何帮助都会很棒。

4 个答案:

答案 0 :(得分:0)

正确答案是换行符,或\ n。您还应该确保单元格包含:

   myCell.Style.IsTextWrapped = true;

答案 1 :(得分:0)

如果要导出到.csv,请用双引号字符(“)包装每个字段。在此内部,加倍任何现有的双引号(.Replace("""", """""")

您需要使用模式","分隔字段,并打开和关闭引号。

这将在引入Excel时保留现有换行符。如果您需要换行符,请在需要的地方插入Environment.NewLine。

使用.csv,您没有很多选项来指定单元格格式。

答案 2 :(得分:0)

你可以通过在双引号中包含包含换行符的值来实现这一点(确保首先用双引号替换双引号),但是如果你用CSV进行替换,那么你的老板就会抱怨有一个换行的单元格只显示excel中的第一行。

有许多开源和商业软件包可以让你直接创建excel,这可能会克服这些问题。

答案 3 :(得分:0)

有:

Row 1 Col1 | Row1 Col2
-----------+----------
Row 2 Col1 | Row2
           | Col2 (different line)

最小的CSV是:

Row1 Col1,Row1 Col2
Row2 Col1,"Row2
Col2 (different line)"

"将其标记为一个块,其中换行符和逗号不是CSV标记的一部分,而是实际内容。你还需要在你使用的任何地方做到这一点,并通过加倍来逃避它。所以

This cell says "hello" to you

转义
"This cell says ""hello"" to you"

在实践中最简单的方法是忽略这样一个事实,即你并不总是需要这样做,而且每次都这样做:

public static string CSVEscape(string content)
{
  return "\"" + content.Replace("\"", "\"\"") + "\"";
}