导出CSV 换行问题。

时间:2022-01-05 13:52:05

程序方面:

1.Windows 中的换行符"\r\n"

2.Unix/Linux 平台换行符是 "\n"。

3.MessageBox.Show() 的换行符为 "\n"

4.Console 的换行符为 "\n"

为保持平台的通用性,可以用系统默认换行符 System.Environment.NewLine。

sql server:换行

select subscriber_id,subscriber_email,company_name from [dbo].[NewsLetterSystem_Subscriber]
where subscriber_id=6967035 update [NewsLetterSystem_Subscriber]
set company_name=N'ALLY CATERING SOLUTION LIMITED'+CHAR(13)+CHAR(10) +N'安聯餐飲設備有限公司'
where subscriber_id=6967035 update [NewsLetterSystem_Subscriber]
set company_name=N'ALLY CATERING SOLUTION LIMITED'+CHAR(10) +N'安聯餐飲設備有限公司'
where subscriber_id=6967035 update [NewsLetterSystem_Subscriber]
set company_name=N'ALLY CATERING SOLUTION LIMITED'+CHAR(13) +N'安聯餐飲設備有限公司'
where subscriber_id=6967035

C# 程序:

  public static string ExportReportInCsv(DataTable dt, string filename, string tmpDir)
{
string tmpFilename = DateTime.Now.Ticks + "_" + filename;
string tmpFilenameWithPath = tmpDir + tmpFilename;
FileStream fs = new FileStream(tmpFilenameWithPath, System.IO.FileMode.Create, System.IO.FileAccess.Write);
//var encoding = GetFileEncodeType(fs);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
StringBuilder sb = new StringBuilder();
//写出列名称
for (int i = ; i < dt.Columns.Count; i++)
{
sb.Append(dt.Columns[i].ColumnName.ToString());
if (i < dt.Columns.Count - )
{
sb.Append(",");
}
}
sw.WriteLine(sb.ToString()); for (int i = ; i < dt.Rows.Count; i++)
{
sb.Clear();
for (int j = ; j < dt.Columns.Count; j++)
{
string rowsText = dt.Rows[i][j].ToString();
rowsText = HandleWrap(rowsText);
sb.Append(rowsText);
if (j < dt.Columns.Count - )
{
sb.Append(",");
}
}
sw.WriteLine(sb.ToString());
}
sw.Close();
fs.Close();
return tmpFilenameWithPath;
} public static string HandleWrap(string content)
{
if (content.Contains(Environment.NewLine))
{
var list = content.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
content = string.Join(" ",list);
} content = content.Replace(@"\n", " ").Replace(@"\r\n", " ").Replace((char),' ').Replace((char), ' ');
return content;
}

导出CSV 换行问题。的更多相关文章

  1. 导出csv文件示例

    导出csv文件示例 csv文件默认以英文逗号,做为列分隔符换行符\n作为行分隔符,写入到一个.csv文件即可.含有英文逗号,和换行符会发生数据输出会出现混乱,下面列出一些处理方法.特殊字符处理1.含有 ...

  2. Web 端 js 导出csv文件&lpar;使用a标签&rpar;

    前言 导出文件,使用最多的方式还是服务器端来处理.比如jsp 中使用response 的方式. 但是,有时候可能就想使用web 前端是否也可以把页面上的内容导出来呢? 比如说,导出页面的一个表格. 这 ...

  3. 导出csv文件时,处理分隔符问题&lpar;转&rpar;

    转自:http://blog.sina.com.cn/s/blog_468530a60100kjpy.html CSV文件默认以英文逗号做为列分隔符,换行符作为行分隔符. 如果不提供网页形式只用命令行 ...

  4. 前端导出csv

    前端导出csv export: function(data, name) { // csv文件的BOM头 \ufeff可以让excel等识别出csv文件的编码 var uri = 'data:text ...

  5. web前端导出csv文件

    前言 导出文件,使用最多的方式还是服务器端来处理.比如jsp 中使用response 的方式. 但是,有时候可能就想使用web 前端是否也可以把页面上的内容导出来呢? 比如说,导出页面的一个表格. 这 ...

  6. javascript前端导出csv表格

    使用场景 后台统计经常要展示各种各样的表格数据,几乎每个表格展示都会伴随着数据的导出. 之前的解决方案都是通过发起一个相同查询参数(querystring)的导出请求(action=export),由 ...

  7. php 导出CSV抽象类

    php 导出CSV抽象类,依据总记录数与每批次记录数,计算总批次.循环导出.避免内存不足的问题. ExportCSV.class.php <? php /** php Export CSV ab ...

  8. 使用PHP生成并导出CSV文件

    CSV文件是以纯文本形式存储的,一般以逗号为分隔符.这里主要简单介绍下如何导出CSV文件. 一.浏览器导出CSV文件格式 /** * 导出CSV文件 */ function exportCsv() { ...

  9. Spring Boot下的一种导出CSV文件的代码框架

    1.前言 ​ CSV,逗号分隔值(Comma-Separated Values),即为逗号分隔的文本文件.如果值中含有逗号.换行符.制表符(Tab).单引号及双引号,则需要用双引号括起来:如果值中包含 ...

随机推荐

  1. AI &lpar;Adobe Illustrator&rpar;详细用法(五)

    最后的调整和输出. 一.改变形状工具/宽度工具/包裹工具 1.改变形状工具[整形工具] 改变形状工具可以让我们更细致的控制形状的改变. 用钢笔工具画一条曲线,并设置宽度样式等. 如果想让这条曲线形状变 ...

  2. HDU1016 dfs

    刷回溯的时候发现我对DFS思路很不清晰,总是做着做着就乱了,刷个水题找找思路. 题意:经典DFS,找出所有的能让1~n的数形成素数环的序列(相邻相加为素数): #include <iostrea ...

  3. Ember学习(8):REOPENING CLASSES AND INSTANCES

    英文原址:http://emberjs.com/guides/object-model/reopening-classes-and-instances/ 你不须要一次就完毕类所有内容的定义,通过reo ...

  4. Android无法更新sdk的解决办法

    修改 windows/system32/drivers/etc/hosts 文件 添加 203.208.46.146 dl.google.com203.208.46.146 dl-ssl.google ...

  5. 第26讲 对话框AlertDialog的自定义实现

    第26讲对话框AlertDialog的自定义实现 比如我们在开发过长当中,要通过介绍系统发送的一个广播弹出一个dialog.但是dialog必需是基于activity才能呈现出来,如果没有activi ...

  6. 带鉴权信息的SIP呼叫

    带鉴权信息的SIP呼叫 INVITE sip:1000@192.168.50.34SIP/2.0 Via: SIP/2.0/UDP192.168.50.32:2445;branch=z9hG4bK-d ...

  7. 基于FPGA的中值滤波算法实现

    在这一篇开篇之前,我需要解决一个问题,上一篇我们实现了基于FPGA的均值滤波算法的实现,最后的显示效果图上发现有一些黑白色的斑点,我以为是椒盐噪声,然后在做基于FPGA的中值滤波算法的实验时,我发现黑 ...

  8. Spark入门到精通--(外传)Cloudera CDH5&period;5&period;4搭建

    http://www.mamicode.com/info-detail-601202.html continue...

  9. linux 高级路由

    1. 什么是高级路由? 是把信息从源穿过网络到达目的地的行为. 有两个动作:确定最佳路径,传输信息 确定最佳路径:手工指定,自动学习. 传输信息:隧道传输,流量整形 高级路由(策略路由)是根据一定的需 ...

  10. 线程池构造类 ThreadPoolExecutor 的 5 个参数

    1.corePoolSize :核心线程数 2.maxPoolSize: 最大线程数 3.keepAliveTime :闲置线程存活时间 4.unit:参数keepAliveTime的时间单位,有7种 ...