导出CSV 换行问题。

摘要:
程序方面:1。Windows中的换行符是“”2。Unix/Linux平台中的换行符是“”。

程序方面:

1.Windows 中的换行符" "

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

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

4.Console 的换行符为 " "

为保持平台的通用性,可以用系统默认换行符 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(@"
", " ").Replace(@"
", " ").Replace((char)13,' ').Replace((char)10, ' ');
            return content;
        }

免责声明:文章转载自《导出CSV 换行问题。》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇tp5 model 的时间戳C#程序员开发WinForm必须知道的 Window 消息大全(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mysql导出逗号分隔的csv文件

     CleverCode在实际的工作中。常常须要将一些报表。或者日志数据等导出来,假设直接做页面,假设次数也不是非常多,需求也不同。所以直接导出csv文件,更加直观。 1 导出csv文件1.1 语句格式      SELECT [列名] FROM table [WHERE 语句] [order by 语句] [limit 语句]      INTO...

用C#中的键值对遍历数组或字符串元素的次数

代码如下: string strs = "ad6la4ss42d6s3"; Dictionary<char, int> dic = new Dictionary<char, int>(); foreach(var item in strs) {...

替换SQL Server字段中的换行符,回车符

replace(string_expression , string_pattern , string_replacement) 第一个参数:要查找的字段。 第二个参数:要查找的字符。 第三个参数:要替换成的字符。 char(9) 水平制表符 char(10)换行键 char(13)回车键 SELECT REPLACE(detail, CHAR(13) +...

C指针——C语言手记

近期敲代码的时候。发现自己非常多东西都開始忘了。 今天最终有机会好好总结一下指针。当做个笔记同一时候也希望对大家实用。假设有不对的地方。希望大家能帮我指正一下。然后我的实验环境是32位RHEL+eclipse。 一、指针基本属性 指针的属性主要包含指针的类型、指针所指向的类型、指针的值。以下以一个简单的样例为例 int *p; 指针的类型:int *...

java 读CSV 和 Excel

1、csv和excel读写对比  开发中经常遇到数据导入和导出功能,csv 和 excel是最常见的数据格式,本文比较了下csv和excel读写相同数据的效率:  测试数据格式一 用上面模板数据生成的测试: 耗时时间统计:  测试数据格式二 生成数据: 耗时统计: 相同格式相同行数对比: csv文件比excel文件稍大 csv读取/写入比ex...

ios7 以后准确获取iphone设备的MAC(物理地址)

通过参考 钉钉 项目,知道是通过wifi拿到路由的MAC地址。那么可不可以拿到iphone 设备的MAC 地址呢? 经过一番搜索,发现所有文章都是针对 ios 7 以前 可以拿到。 而且方法也都是同一篇文章上面的,对于ios7 以后完全没提示。 而使用网络上的方法,在 大于 ios 7 的环境下, 永远返回的MAC 为02:00:00:00:00:00 下...