C#: 创建Excel文件并在Excel中写入数据库中的数据

实现思路:
1.检查数据是否可导出
2.弹出文件保存对话框
3.删除已存在的同名文件
4.创建 Excel 应用实例
5.导出表头
6.导出数据
7.保存 Excel 文件
8.释放 Excel 资源
9.导出成功提示

static void ExportToExcel(DataTable Data, string fileName)
{    // 如果表格中没有行,提示用户无数据可导出if (Data.Rows.Count == 0){return;}// 声明保存文件的对话框SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.DefaultExt = "xls"; // 设置默认后缀string FilterFile = "文件";saveFileDialog.Filter = "EXCEL" + FilterFile + " (*.XLS) |*.xls|EXCEL " + FilterFile + " (*.XLSX)|*.xlsx"; // 文件类型过滤saveFileDialog.InitialDirectory = System.IO.Directory.GetCurrentDirectory(); // 设置默认路径为当前程序路径saveFileDialog.FileName = fileName; // 设置默认文件名// 打开保存对话框,用户取消则退出if (saveFileDialog.ShowDialog() == DialogResult.Cancel){return;}// 获取用户输入的文件路径string fileNameString = saveFileDialog.FileName;// 如果文件路径为空,直接退出if (fileNameString.Trim() == " "){return;}// 获取表格行数和列数int rowscount = Data.Rows.Count;int colscount = Data.ColumnCount;// 验证行数和列数的合法性if (rowscount <= 0 || colscount <= 0 || rowscount > 65536 || colscount > 255){return; // 行数或列数非法直接退出}// 如果文件已存在,尝试删除System.IO.FileInfo file = new System.IO.FileInfo(fileNameString);if (file.Exists){try{file.Delete();}catch (Exception error){return;}}// 声明 Excel 应用程序对象Microsoft.Office.Interop.Excel.Application objExcel = null;Microsoft.Office.Interop.Excel.Workbook objWorkbook = null;Microsoft.Office.Interop.Excel.Worksheet objsheet = null;try{objExcel = new Microsoft.Office.Interop.Excel.Application(); // 创建 Excel 应用实例objWorkbook = objExcel.Workbooks.Add(System.Reflection.Missing.Value); // 新建工作簿objsheet = (Microsoft.Office.Interop.Excel.Worksheet)objWorkbook.ActiveSheet; // 获取活动工作表objExcel.Visible = false; // 设置 Excel 不可见// 写入表头到 Excelint displayColumnsCount = 1; // 可见列的计数器,Excel 的列索引从 1 开始,所以 displayColumnsCount = 1。for (int i = 0; i <= Data.ColumnCount - 1; i++){if (Data.Columns[i].Visible == true) // 只导出可见列{objExcel.Cells[1, displayColumnsCount] = Data.Columns[i].HeaderText.Trim();displayColumnsCount++;}}// 写入数据到 Excelfor (int row = 0; row <= Data.RowCount - 1; row++){displayColumnsCount = 1; // 重置列计数器for (int col = 0; col < colscount; col++){if (Data.Columns[col].Visible == true) // 只导出可见列{try{((Microsoft.Office.Interop.Excel.Range)objExcel.Cells[row + 2, displayColumnsCount]).NumberFormatLocal = "@"; // 设置单元格格式为文本objExcel.Cells[row + 2, displayColumnsCount] = Data.Rows[row].Cells[col].Value.ToString().Trim(); // 写入单元格数据displayColumnsCount++;}catch (Exception){// 忽略单元格写入错误}}}}objsheet.Columns.EntireColumn.AutoFit(); // 设置列宽自适应// 保存 Excel 文件objWorkbook.SaveAs(fileNameString, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value,System.Reflection.Missing.Value, System.Reflection.Missing.Value,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, System.Reflection.Missing.Value, System.Reflection.Missing.Value,System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value);}catch (Exception error){error.ErrorProcessing.WriteErrrorLog(error.ToString()); // 写入错误日志}finally{// 关闭 Excel 应用程序if (objWorkbook != null){objExcel.DisplayAlerts = false; // 禁止弹出警告框objExcel.AlertBeforeOverwriting = false; // 禁止覆盖警告objWorkbook.Close(System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value);}if (objExcel != null && objExcel.Workbooks != null){objExcel.Workbooks.Close();}if (objExcel != null){objExcel.Quit(); // 退出 Excel 应用程序}objsheet = null; // 释放工作表对象objWorkbook = null; // 释放工作簿对象objExcel = null; // 释放 Excel 应用对象}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/70270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek 和 ChatGPT 在特定任务中的表现:逻辑推理与创意生成

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ Linux网络编程笔记&#xff1a; https://blog.cs…

HTTP2.0 和 HTTP1.1 的区别

多路复用&#xff08;优化管道&#xff09;&#xff0c;基于HTTPS&#xff0c;二进制帧&#xff0c;Header压缩&#xff0c;服务器推送 多路复用&#xff1a;HTTP/2.0 在一个连接里&#xff0c;客户端和浏览器都可以同时发送多个请求和响应&#xff0c;而不用按照顺序一一对应&…

【物联网】电子电路基础知识

文章目录 一、基本元器件1. 电阻2. 电容3. 电感4. 二极管(1)符号(2)特性(3)实例分析5. 三极管(1)符号(2)开关特性(3)实例6. MOS管(产效应管)(1)符号(2)MOS管极性判定(3)MOS管作为开关(4)MOS管vs三极管7. 门电路(1)与门(2)或门(3)非门二、常用元器件…

基于ffmpeg+openGL ES实现的视频编辑工具-解码(四)

在开发视频编辑工具时,预览功能是基石,它涵盖视频、图片以及音频播放,而视频解码则是实现视频预览及后续编辑操作的关键环节。本文聚焦于基于 FFmpeg 实现视频解码的过程,详细阐述开发中遭遇的痛点、对应的解决方式,以及核心代码的运作原理。 一、开发背景与目标 视频编…

python shlex

python shlex 核心函数 shlex.split(s, commentsFalse, posixTrue) 作用&#xff1a;将字符串按类似 Shell 的语法规则分割成参数列表&#xff0c;常用于安全处理命令行输入。参数说明&#xff1a; s&#xff08;必需&#xff09;: 待分割的字符串&#xff08;如 “ls -l ‘…

软件测试用例设计方法之正交表

一、概念 能够使用最小的测试过程集合获得最大的测试覆盖率&#xff0c;从全面试验中挑选出有代表性的点进行测试。适用于配置类软件&#xff0c;组合比较多的情况。 正交表Ln(m^k)&#xff1a; 特点&#xff1a;均匀分散、整齐可比、高效、快速、经济 n&#xff1a;正交表的…

Cursor实战:Web版背单词应用开发演示

Cursor实战&#xff1a;Web版背单词应用开发演示 需求分析自行编写需求文档借助Cursor生成需求文档 前端UI设计后端开发项目结构环境参数数据库设计安装Python依赖运行应用 前端代码修改测试前端界面 测试数据生成功能测试Bug修复 总结 在上一篇《Cursor AI编程助手不完全指南》…

DeepSeek与ChatGPT:会取代搜索引擎和人工客服的人工智能革命

云边有个稻草人-CSDN博客 在众多创新技术中&#xff0c;DeepSeek和ChatGPT无疑是最为引人注目的。它们通过强大的搜索和对话生成能力&#xff0c;能够改变我们与计算机交互的方式&#xff0c;帮助我们高效地获取信息&#xff0c;增强智能服务。本文将深入探讨这两项技术如何结合…

JavaScript中判断元素是否在可视区域内

JavaScript中判断元素是否在可视区域内 1.有什么应用2.方法1-----使用offsetTop、scrollTop3.方法2-----getBoundingClientRect4.方法3-----Intersection Observer 1.有什么应用 懒加载列表的无限滚动计算广告元素的曝光情况 2.方法1-----使用offsetTop、scrollTop offsetTo…

PyTorch与TensorFlow的对比:哪个框架更适合你的项目?

在机器学习和深度学习领域&#xff0c;PyTorch 和 TensorFlow 是最流行的两个框架。它们各有特点&#xff0c;适用于不同的开发需求和场景。本文将详细对比这两个框架&#xff0c;帮助你根据项目需求选择最合适的工具。 一、概述 PyTorch 和 TensorFlow 都是深度学习框架&…

挖掘图片的秘密:如何用piexif提取和修改Exif数据

Exif&#xff08;Exchangeable Image File Format&#xff09;数据是一个广泛用于数字图像&#xff08;尤其是JPEG和TIFF格式&#xff09;中的元数据格式。它包含了关于图像的各种信息&#xff0c;包括拍摄设备的类型、拍摄时间、光圈、曝光时间、GPS定位信息等。Exif数据使得用…

定期自动统计大表执行情况

一、创建用户并赋权 create user dbtj identified by oracle default tablespace OGGTBS;grant connect,resource to dbtj;grant select any dictionary to dbtj;grant create job to dbtj;grant manage scheduler to dbtj; 二、创建存储表 1、连接到新建用户 conn dbtj/or…

模拟与高精度

题目描述 高精度加法&#xff0c;相当于 ab problem&#xff0c;不用考虑负数。 输入格式 分两行输入。a,b≤10500。 输出格式 输出只有一行&#xff0c;代表 ab 的值。 输入输出样例 输入 #1复制 1 1输出 #1复制 2输入 #2复制 1001 9099输出 #2复制 10100说明/提示…

鉴源实验室·基于DDS的模糊测试研究

作者 | 柳泽 上海控安可信软件创新研究院 鉴源实验室 01 引 言 近年来&#xff0c;随着工业4.0和智能网联技术的发展&#xff0c;数据驱动型系统的需求日益增加&#xff0c;推动了诸如 DDS&#xff08;Data Distribution Service&#xff09;等高效数据分发中间件的应用和发…

新功能:“禁用TLS特性”,让浏览器更隐蔽

如果你在使用浏览器时担心隐私泄露、被广告追踪&#xff0c;或者需要绕过反作弊系统&#xff0c;AdsPower 的新功能——“禁用 TLS 特性”或许可以帮到你。 今天&#xff0c;我们就来聊聊这个功能的作用、原理&#xff0c;以及如何使用。 &#x1f50d;先来聊聊&#xff1a;TL…

【第一节】C++设计模式(创建型模式)-工厂模式

目录 前言 一、面向对象的两类对象创建问题 二、解决问题 三、工厂模式代码示例 四、工厂模式的核心功能 五、工厂模式的应用场景 六、工厂模式的实现与结构 七、工厂模式的优缺点 八、工厂模式的扩展与优化 九、总结 前言 在面向对象系统设计中&#xff0c;开发者常…

DeepSeek:企业级大模型私有化部署与应用全解析(深度扩展版)

一、DeepSeek基本信息介绍(扩展) DeepSeek作为中国首个实现全栈自主可控的开源大模型体系,其技术演进经历了DeepSeek LLM→DeepSeek MoE→DeepSeek-V2→DeepSeek-V3→DeepSeek R1五大阶段。核心突破在于: 架构创新:在Transformer基础上引入分组查询注意力(GQA),推理成…

zyNo.25

SSRF漏洞 在了解ssrf漏洞前先了解curl命令的使用 1.curl命令的使用 基本格式&#xff1a;curl<参数值>请求地址 get请求&#xff1a;curl http://127.0.0.1 post请求&#xff1a;curl -X POST -d "a1&b2" http://127.0.0.1/(其中&#xff0c;使用-X参…

文件理解:从C标准库到系统调用

目录 一、C 标准库文件操作 1. 文件的写入 2. 文件的读取 3. 数据输出到显示器 4. 标准输入输出流 二、C 标准库文件操作模式 三、系统调用文件操作 1. 文件的打开与描述符 2. 文件的读取 3. 文件操作标志 4. 文件权限 5. 文件描述符 四、C 标准库与系统调用的比较…

【阮一峰】5.函数

函数 简介 函数的类型声明&#xff0c;需要在声明函数时&#xff0c;给出参数的类型和返回值的类型。 function hello(txt: string): void {console.log("hello " txt); }如果变量被赋值为一个函数&#xff0c;变量的类型有两种写法。 // 写法一 const hello f…