首页 > 编程语言 >C# 将DataTable 导出 CSV

C# 将DataTable 导出 CSV

时间:2024-04-23 15:00:37浏览次数:27  
标签:title C# sw strValue table line CSV DataTable

完整代码

 public static bool dataTableToCsv(DataTable table, string file)
        {
            try
            {
                string title = "";
                FileStream fs = new FileStream(file, FileMode.OpenOrCreate);
                //FileStream fs1 = File.Open(file, FileMode.Open, FileAccess.Read);

                StreamWriter sw = new StreamWriter(new BufferedStream(fs), System.Text.Encoding.Default);

                for (int i = 0; i < table.Columns.Count; i++)
                {
                    title += table.Columns[i].ColumnName + "\t"; //栏位:自动跳到下一单元格
                }
                title = title.Substring(0, title.Length - 1) + "\n";
                sw.Write(title);
                foreach (DataRow row in table.Rows)
                {
                    string line = "";
                    string strValue = "";
                    for (int i = 0; i < table.Columns.Count; i++)
                    {
                        //bool containsNewLineDoubleQuote = row[i].ToString().Contains("\t"); // 检查直接字符
                        //if (containsNewLineDoubleQuote == true)
                        //{
                        //     MessageBox.Show(row[i].ToString());
                        //}

                        strValue = row[i].ToString().Trim();
                        // 使用正则表达式移除所有换行符 
                        strValue = System.Text.RegularExpressions.Regex.Replace(strValue, @"[\r\n]+", "  ");
                        strValue = System.Text.RegularExpressions.Regex.Replace(strValue, @"[\t]+", "  ");

                        line += strValue + "\t"; //内容:自动跳到下一单元格
                    }
                    //line = line.Substring(0, line.Length - 1) + "\n";
                    //sw.Write(line);
                    sw.WriteLine(line);
                }
                sw.Close();
                fs.Close();
                return true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
        }

调用方法

private void btnToExcel_BtnClick(object sender, EventArgs e)
{
            DataTable dt = this.dataGridView1.DataSource as DataTable;

            if (dt == null || dt.Rows.Count <= 0)
            {
                MessageBox.Show("没有要导出的数据,请查询后再试!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            SaveFileDialog saveFileDialog = new SaveFileDialog();
            // 设置默认文件名
            saveFileDialog.FileName = "安装工单导出-" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
            saveFileDialog.Filter = "Excel2003 (*.xls)|*.xls|Excel (*.xlsx)|*.xlsx";

            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                string strFileName = saveFileDialog.FileName;
                // 处理文件路径
                string strFileName = @"d:\安装工单导出-" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
                //bool bolResult=clsDataTableToCVS.dataTableToCsv(dt, @"d:\cccc.xls");
                bool bolResult = clsDataTableToCVS.dataTableToCsv(dt, strFileName);
  
                if (bolResult == true)
                {
                    MessageBox.Show("安装工单 导出成功!" , "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("安装工单 导出失败!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
}

 

标签:title,C#,sw,strValue,table,line,CSV,DataTable
From: https://www.cnblogs.com/hailexuexi/p/18152898

相关文章

  • C# 将DataTable 导出 Excel
    首先引用 Excel完整代码//速度最快///<summary>///将数据集中的数据导出到EXCEL文件///</summary>///<paramname="dataTable">输入数据集</param>///<paramname="isShowExcle">是否......
  • JTCR-java.util 集合框架-17
    JDK9开始,java.util包作为java.base模块的一部分。概述集合框架的设计目标高性能。不同类型的集合使用方式相似,有很好的互操作性。容易扩展或适配集合。Iterator接口提供了访问集合中元素通用、标准化的方式。任意集合类都可以使用Iterator提供的方法访问元素。JDK......
  • JS基础(二)运算符、流程控制语句、数组对象、JSON对象、Date对象、Math对象、Function对
    一运算符<script>//算数运算符//(1)自加运算varx=10;//x=x+1;//x+=2;varret=x++;//先赋值再计算:x+=1//varret=++x;//先计算再赋值:x+=1console.log(x)......
  • Oracle OCR,Vote disk故障恢复方案
     Oracle OCR,Votedisk故障恢复方案 1  概述OCR/Votedisk磁盘组故障场景恢复操作方案。测试版本:11.2.0.4.0适用于以下场景:操作维护OCR/Votedisk对应的磁盘组,提前备份了OCR文件信息,以便存在回退维护的空间。由于某些原因导致OCR/Votedisk的磁盘组丢失从而......
  • 自定义Mini-Tomcat(一)
    在Spring+ / SpringMVC中使用到了Tomcat。那么Tomcat提供什么功能呢?访问使用HTTP协议,所以它首先是一个HTTP服务器(关于HTTP协议资料较多自行查找);其次MVC提供servlet部署在tomcat中进行实际的业务操作,所以它还是一个Servlet容器。下面定义一个Mini-Tomcat提供以上两个......
  • 基于 ESPHome 的 3D 打印机舱内控制系统(1): 荆棘满途之 FireBeetle 2 ESP32-C6 初始
    前言开一个新坑,谋划了很久,最初是为了测试Moonraker的Sensor组件,逐步扩展到设计一个完整的控制系统。硬件选择ESP系列芯片,功能足够,还支持WiFi/BT。软件看了一圈选择ESPHome,轻代码,功能强大配置简单易上手。本文涉及的硬件:DFRoborFireBeetle2ESP32-C6迷你开发板本文......
  • kylin arm sp3 安装docker
    #cat/etc/kylin-release64位的操作系统#uname-paarch64Linux内核版本≥3.10#uname-r4.19.90-23.8.v2101.ky10.aarch64iptables版本≥1.4#iptables--versioniptablesv1.8.1(legacy)yumremovedocker\docker-client\dock......
  • 推荐一款好用的文档工具:docsify
    docsify是什么docsify可以快速帮你生成文档网站。不同于GitBook、Hexo的地方是它不会生成静态的.html文件,所有转换工作都是在运行时。如果你想要开始使用它,只需要创建一个index.html就可以开始编写文档并直接部署在GitHubPages。编写一些团队内部研发规范、api接口文档......
  • 「杂题乱刷」AT_abc279_e
    链接很一眼。容易发现除非操作时影响\(1\)这个数字,否则答案一定改变,直接特判影响到\(1\)这个数字的两种情况即可。代码:点击查看代码/*Tips:你数组开小了吗?你MLE了吗?你觉得是贪心,是不是该想想dp?一个小时没调出来,是不是该考虑换题?*/#include<bits/stdc++.h>using......
  • Spring AOP和AspectJ
    AOP:AspectOrientedProgramming,即面向切面编程是一种编程思想,是OOP(面相对象编程)的一个补充,实现对一类功能的集中处理,而不是在每个需要处理的地方进行直接的方法调用,常用于实现一些业务无关的功能(如事务控制、日志记录、安全控制、数据统计、异常处理等) SpringAOP:依赖于Spr......