导出CSV 换行问题。

 

程序方面:

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 = 0; i < dt.Columns.Count; i++)
            {
                sb.Append(dt.Columns[i].ColumnName.ToString());
                if (i < dt.Columns.Count - 1)
                {
                    sb.Append(",");
                }
            }
            sw.WriteLine(sb.ToString());

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                sb.Clear();
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    string rowsText = dt.Rows[i][j].ToString();
                    rowsText = HandleWrap(rowsText);
                    sb.Append(rowsText);
                    if (j < dt.Columns.Count - 1)
                    {
                        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)13,' ').Replace((char)10, ' ');
            return content;
        }

 

转载于:https://www.cnblogs.com/zoro-zero/p/7340077.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值