C# | 导出DataGridView中的数据到Excel、CSV、TXT
C# | 导出DataGridView中的数据到Excel、CSV、TXT
文章目录
- C# | 导出DataGridView中的数据到Excel、CSV、TXT
- 前言
- DataGridView数据转存DataTable
- DataTable转Excel
- 方法一、使用Microsoft.Office.Interop.Excel
- 方法二、使用EPPlus库
- 方法三、使用NPOI库
- DataTable转CSV
- DataTable转TXT
- DataGridView导出数据为JSON、XML格式
- 结束语
前言
导出DataGridView中的数据到Excel、CSV、TXT是开发中经常遇到的需求。而将DataGridView中的数据先转换为DataTable格式,再进行导出,是一种常见的实现方式。本文将介绍如何将DataGridView中的数据转换为DataTable格式,并提供将DataTable转换为Excel、CSV、TXT三种格式的例子。
将DataGridView中的数据转换为DataTable格式,有助于我们更方便地对数据进行处理和操作。通过将DataGridView中的数据转换为DataTable格式,我们可以轻松地使用C#中的各种数据处理和操作函数,例如排序、筛选、统计等。同时,将数据转换为DataTable格式还可以提高数据的可读性和可维护性,使我们更容易理解和管理数据。
在本文中,我们将以实际的代码示例为例,演示如何将DataGridView中的数据转换为DataTable格式,并提供将DataTable转换为Excel、CSV、TXT三种格式的例子。通过本文的介绍和示例,您将能够快速掌握将DataGridView中的数据导出到各种格式的技巧,提高您的开发效率和代码质量。
DataGridView数据转存DataTable
以下是转换的思路:
- 首先创建了一个新的DataTable对象。
- 然后我们使用DataGridView的列标题和值类型添加了DataTable的列。
- 接下来,我们使用DataGridView的行和单元格值创建了新的DataRow对象,并将其添加到DataTable中。
// 创建一个新的DataTable对象DataTable dt = new DataTable();// 添加列foreach (DataGridViewColumn column in dataGridView1.Columns){dt.Columns.Add(column.HeaderText, column.ValueType);}// 添加行foreach (DataGridViewRow row in dataGridView1.Rows){DataRow dr = dt.NewRow();foreach (DataGridViewCell cell in row.Cells){dr[cell.ColumnIndex] = cell.Value;}dt.Rows.Add(dr);}
DataTable转Excel
方法一、使用Microsoft.Office.Interop.Excel
添加引用:
using System;
using System.Data;
using System.IO;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
将DataTable转存为Excel文件:
public static void Convert(DataTable dt, string filePath){// 创建一个Excel应用程序对象Excel.Application excelApp = new Excel.Application();// 创建一个新的工作簿Excel.Workbook workbook = excelApp.Workbooks.Add(Type.Missing);// 创建一个新的工作表并命名为“Sheet1”Excel.Worksheet worksheet = (Excel.Worksheet)workbook.ActiveSheet;worksheet.Name = "Sheet1";// 将DataTable的列名写入工作表中for (int i = 0; i < dt.Columns.Count; i++){worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;}// 将DataTable的数据写入工作表中for (int i = 0; i < dt.Rows.Count; i++){for (int j = 0; j < dt.Columns.Count; j++){worksheet.Cells[i + 2, j + 1] = dt.Rows[i][j];}}// 保存工作簿workbook.SaveAs(filePath, Excel.XlFileFormat.xlOpenXMLWorkbook, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);// 关闭工作簿和Excel应用程序对象workbook.Close();excelApp.Quit();// 释放Excel对象System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);}
方法二、使用EPPlus库
通过NuGet安装EPPlus库:
在Visual Studio中,您可以使用NuGet包管理器来添加EPPlus库。只需在项目中右键单击“引用”,然后选择“管理NuGet包”,并在搜素框中搜索“EPPlus”即可找到EPPlus库,选择安装即可。
将DataTable转存为Excel文件:
public static void Convert(DataTable dt, string filePath){// 创建一个新的Excel工作簿ExcelPackage excelPackage = new ExcelPackage();// 创建一个新的工作表并命名为“Sheet1”ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1");// 将DataTable的列名写入工作表中for (int i = 0; i < dt.Columns.Count; i++){worksheet.Cells[1, i + 1].Value = dt.Columns[i].ColumnName;}// 将DataTable的数据写入工作表中for (int i = 0; i < dt.Rows.Count; i++){for (int j = 0; j < dt.Columns.Count; j++){worksheet.Cells[i + 2, j + 1].Value = dt.Rows[i][j];}}// 保存Excel文件FileInfo excelFile = new FileInfo(filePath);excelPackage.SaveAs(excelFile);}
方法三、使用NPOI库
添加引用:
using System;
using System.Data;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
将DataTable转存为Excel文件:
public static void Convert(DataTable dt, string filePath){// 创建一个新的Excel工作簿IWorkbook workbook = new XSSFWorkbook();// 创建一个新的工作表并命名为“Sheet1”ISheet worksheet = workbook.CreateSheet("Sheet1");// 将DataTable的列名写入工作表中IRow headerRow = worksheet.CreateRow(0);for (int i = 0; i < dt.Columns.Count; i++){ICell cell = headerRow.CreateCell(i);cell.SetCellValue(dt.Columns[i].ColumnName);}// 将DataTable的数据写入工作表中for (int i = 0; i < dt.Rows.Count; i++){IRow dataRow = worksheet.CreateRow(i + 1);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = dataRow.CreateCell(j);cell.SetCellValue(dt.Rows[i][j].ToString());}}// 保存Excel文件using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)){workbook.Write(fileStream);}}
DataTable转CSV
添加引用:
using System;
using System.Data;
using System.IO;
将DataTable转存为CSV文件:
public static void Convert(DataTable dataTable, string filePath){// 创建一个写入器using (StreamWriter writer = new StreamWriter(filePath)){// 写入表头for (int i = 0; i < dataTable.Columns.Count; i++){writer.Write(dataTable.Columns[i].ColumnName);if (i < dataTable.Columns.Count - 1){writer.Write(",");}}writer.Write(writer.NewLine);// 写入表数据foreach (DataRow row in dataTable.Rows){for (int i = 0; i < dataTable.Columns.Count; i++){writer.Write(row[i].ToString());if (i < dataTable.Columns.Count - 1){writer.Write(",");}}writer.Write(writer.NewLine);}}}
DataTable转TXT
添加引用:
using System;
using System.Data;
using System.IO;
将DataTable转存为TXT文件:
public static void Convert(DataTable dataTable, string filePath, string delimiter = "\t"){// 创建一个写入器using (StreamWriter writer = new StreamWriter(filePath)){// 写入表头for (int i = 0; i < dataTable.Columns.Count; i++){writer.Write(dataTable.Columns[i].ColumnName);if (i < dataTable.Columns.Count - 1){writer.Write(delimiter);}}writer.Write(writer.NewLine);// 写入表数据foreach (DataRow row in dataTable.Rows){for (int i = 0; i < dataTable.Columns.Count; i++){writer.Write(row[i].ToString());if (i < dataTable.Columns.Count - 1){writer.Write(delimiter);}}writer.Write(writer.NewLine);}}}
DataGridView导出数据为JSON、XML格式
请参考文章:《C# | DataGridView数据转存为Json、XML格式》
结束语
希望本文能够对您有所帮助,并使您更加熟悉C#编程语言中的文件导出和数据格式转换技术。
如果您有任何问题或建议,请在下方留言。
相关文章:
C# | 导出DataGridView中的数据到Excel、CSV、TXT
C# | 导出DataGridView中的数据到Excel、CSV、TXT 文章目录C# | 导出DataGridView中的数据到Excel、CSV、TXT前言DataGridView数据转存DataTableDataTable转Excel方法一、使用Microsoft.Office.Interop.Excel方法二、使用EPPlus库方法三、使用NPOI库DataTable转CSVDataTable转T…...
新规拉开中国生成式AI“百团大战”序幕?
AI将走向何方? ChatGPT在全球范围掀起的AI热潮正在引发越来越多的讨论,AI该如何管理?AI该如何发展?一系列问题都成为人们热议的焦点。此前,马斯克等海外名人就在网络上呼吁OpenAI暂停ChatGPT的模型训练和迭代…...
日撸 Java 三百行day31
文章目录day31 整数矩阵及其运算面向对象思想java异常处理java中的getter和setter方法代码day31 整数矩阵及其运算 面向对象思想 结合之前day7和day8面向过程开发,只关注了矩阵加法和矩阵乘法的功能。而day31是面向对象开发,一个矩阵类,在这…...
在线绘制思维导图
思维导图是一种可视化的思维工具,它可以将放射性思考具体化为可视的图像和图表。 思维导图利用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级图表现出来,把主题关键词与图像、颜色等建立记忆链接。 它运用图像和颜色等多种元素&…...
月薪20k的性能测试必备技能:发现性能瓶颈掌握性能调优
背景 当下云计算、大数据盛行的背景下,大并发和大吞吐量的需求已经是摆在企业面前的问题了,其中网络的性能要求尤为关键,除了软件本身需要考虑到性能方面的要求,一些硬件上面的优化也是必不可少的。 作为一名测试工作者…...
3、Web前端学习规划:CSS - 学习规划系列文章
CSS作为Web前端开发的第2种重要的语言,笔者建议在学了HTML之后进行。CSS主要是对于HTML做一个渲染,其也带了一些语言语法函数,功能也非常强大。 1、 简介; CSS(层叠样式表)是一种用于描述网页样式的语言。它可以控制网页中的字体、…...
城市轨道交通列车时刻表优化问题【最优题解】
文章目录城市轨道交通列车时刻表优化问题思路文章底部城市轨道交通列车时刻表优化问题 最新进度在文章最下方卡片,加入获取思路数据代码论文:2023十三届MathorCup交流 (第一时间在CSDN分享,文章底部) 题目为数据分析类题目。列车时刻表优化…...
常年不卷,按时下班,工作能力强,同事求助知无不言,不扯皮,不拉帮结派,这样的职场清流竟然被裁掉了!...
在职场上,你永远想不到什么样的员工会被优化,比如下面这位:常年不卷,按时下班,工作很专业,同事问什么都回答,不扯皮,不拉帮结派,简直是职场清流。在上个月竟然被优化了&a…...
基于改进多目标灰狼优化算法的考虑V2G技术的风、光、荷、储微网多目标日前优化调度研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
Python 函数、文件与模块
“探索 Python” 这一系列的前几篇文章已为 Python 编程新手介绍了几方面的主题,包括变量、容器对象和复合语句。本文以这些概念为基础,构造一个完整的 Python 程序。引入了 Python 函数和模块,并展示了构建一个 Python 程序、将其存储在文件…...
在Spring Boot微服务使用RedisTemplate操作Redis
记录:400 场景:在Spring Boot微服务使用RedisTemplate操作Redis缓存和队列。 使用ValueOperations操作Redis String字符串;使用ListOperations操作Redis List列表,使用HashOperations操作Redis Hash哈希散列,使用SetO…...
4月软件测试面试太难,吃透这份软件测试面试笔记后,成功跳槽涨薪30K
4 月开始,生活工作渐渐步入正轨,但金三银四却没有往年顺利。昨天跟一位高级架构师的前辈聊天时,聊到今年的面试。有两个感受,一个是今年面邀的次数比往年要低不少,再一个就是很多面试者准备明显不足。不少候选人能力其…...
人人拥有ChatGPT的时代来临了,这次微软很大方!
技术迭代的在一段时间内是均匀发展甚至止步不前的,但在某段时间内会指数级别的爆发。 ChatGPT背后的GPT 3.5训练据说花了几百万美金外加几个月的时间,参数大概有1700多亿。 这对于绝大多数的个人或企业来说绝对是太过昂贵的。 然而,微软&am…...
【C++11】自动类型推导(Type Inference)
C11 中的自动类型推导是通过 auto 关键字实现的。auto 关键字可以用于声明变量,让编译器自动推导变量的类型。具体来说,编译器会根据变量的初始化表达式来推导变量的类型。 例如,下面的代码中,变量 x 的类型会被推导为 int 类型&…...
拐点!智能座舱破局2023
“这是我们看到的整个座舱域控渗透率,2022年是8.28%,主力的搭载车型仍然是30-35万区间。”3月29日,2023年度(第五届)高工智能汽车市场峰会上,高工智能汽车研究院首发《2022-2025年中国智能汽车产业链市场数…...
SAP开发环境ABAP的搭建(客户端和服务器),Developer Key和AccessKey的绕过方法
目录 一.前言 二.客户端GUI安装 1.下载好SAP GUI 750 2.解压后找到SAPGUISetup.exe 3.安装 4.安装完整教程 三.服务端搭建 1.安装VmWare虚拟机 2.下载虚拟机镜像 3.打开虚拟机 4.调整内存大小 5.启动虚拟机 四.创建程序 1.创建包 2.创建程序 3.Developer Key和A…...
VSCode的C/C++编译调试环境搭建(亲测有效)
文章目录前言1.安装VSCode和mingw642.配置环境变量3.配置VSCode的运行环境3.1设置CodeRunner3.2设置C/C4.调试环境配置前言 这片博客挺早前就写好了,一直忘记发了,写这篇博客之前自己配的时候也试过很多博客,但无一例外,都各种js…...
物理世界的互动之旅:Matter.js入门指南
theme: smartblue 本文简介 戴尬猴,我是德育处主任 欢迎来到《物理世界的互动之旅:Matter.js入门指南》。 本文将带您探索 Matter.js,一个强大而易于使用的 JavaScript 物理引擎库。 我将介绍 Matter.js 的基本概念,包括引擎、世界…...
在线文章生成器-文章生成器在线生成
免费自动写作软件 目前市面上存在一些免费自动写作软件,以下介绍几个开源的自动写作软件。 GPT-2:这是由OpenAI推出的一款自动写作工具,它可以生成高质量的文章,其优点在于能够理解语言结构和语法规则,从而生成表达自…...
第十四届蓝桥杯大赛软件赛省赛-试题 B---01 串的熵 解题思路+完整代码
欢迎访问个人网站来查看此文章:http://www.ghost-him.com/posts/db23c395/ 问题描述 对于一个长度为 n 的 01 串 Sx1x2x3...xnS x_{1} x_{2} x_{3} ... x_{n}Sx1x2x3...xn,香农信息熵的定义为 H(S)−∑1np(xi)log2(p(xi))H(S ) − {\textstyl…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...
Redis上篇--知识点总结
Redis上篇–解析 本文大部分知识整理自网上,在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库,Redis 的键值对中的 key 就是字符串对象,而 val…...
Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...
