我有两个数据库,一个是主数据库,一个是详细信息, 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 ,但然后将评论放入单独的单元格中。
任何帮助都会很棒。
答案 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("\"", "\"\"") + "\"";
}