当前位置: 首页 > news >正文

C#上位机使用Microsoft.Office.Interop.Excel和EPPlus库对Excel或WPS表格进行写操作

C#上位机使用Microsoft.Office.Interop.Excel和EPPlus库对Excel或WPS表格进行写操作

一、使用Microsoft.Office.Interop.Excel

1、通过NuGet包管理器添加引用

按照下图中红框所示进行操作。
需要安装Microsoft.Office.Interop.Excel
在这里插入图片描述
添加Microsoft Office 16.0 Object Library进引用列表(往Excel里面插入图片需要用到)
在这里插入图片描述

2、编写一个将DataGridView的数据写入到Excel里面并保存

        public void WriteExcelFromDgv(DataGridView dgv){//定义一个工作簿对象Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();//定义Excel工作表Microsoft.Office.Interop.Excel.Worksheet worksheet = excelApp.Workbooks.Add().Worksheets[1];//获取总行数和总列数int rowCount = dgv.Rows.Count;int columnCount = dgv.Columns.Count;//填写列标题for (int i = 0; i < columnCount; i++){worksheet.Cells[1, i + 1] = dgv.Columns[i].HeaderText;}//填写表格数据for (int i = 0; i < rowCount - 1; i++){for (int j = 0; j < columnCount; j++){worksheet.Cells[i + 2, j + 1] = dgv.Rows[i + 1].Cells[j].Value;}}//设置列宽和数据一致worksheet.Columns.AutoFit();//保存文件worksheet.SaveAs(@"C:\Users\new\Desktop\1234.xlsx");//释放对象。不释放对象的话,打开excel会弹出有程序占用,只能以只读的方式打开。excelApp.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);excelApp = null;}
        private void button1_Click(object sender, EventArgs e){objExcelRW.WriteExcelFromDgv(this.dataGridView1);}

3、效果展示

在这里插入图片描述
用这个库在编写代码进行单元格格式进行设置时,不会智能提示,编写起来不够方便。

4、编写一个方法将图片写入到Excel中

        public void WriteImageInExcel(string path){//创建一个新的Excel文件----------//定义一个工作簿对象Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();//定义Excel工作表Microsoft.Office.Interop.Excel.Worksheet worksheet = excelApp.Workbooks.Add().Worksheets[1];//------------------------------/*获取已经存在的Excel文件*****************			//获取已创建好的工作簿路径string excelPath = @"C:\Users\new\Desktop\0830.xlsx\";//将现有工作簿加入到已经定义好的工作簿集合excelApp.Workbooks.Add(excelPath);//获取第一个工作表Microsoft.Office.Interop.Excel.Worksheet worksheet = excelApp.Worksheets[1];*/ //从指定位置读取图片string imagePath = path;//AddPicture()://第1个参数,放的是图片路径;第2个和第3个是枚举类型,固定的值;第4个参数是图片左上角距离Excel表格左边的距离;//第5个参数是图片左上角距离Excel表格上边的距离;第6个参数是图片的宽度;第7个参数是图片的高度。worksheet.Shapes.AddPicture(imagePath, Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoTriState.msoTrue, 10, 50, 90, 100);//保存文件worksheet.SaveAs(@"C:\Users\new\Desktop\0830.xlsx");//释放对象。不释放对象的话,打开excel会弹出有程序占用,只能以只读的方式打开。excelApp.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);excelApp = null;}
        private void button3_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();DialogResult result = openFileDialog.ShowDialog();string path = openFileDialog.FileName;objExcelRW.WriteImageInExcel(path);}

5、效果展示

在这里插入图片描述

二、使用Epplus

1、通过NuGet包管理器添加引用

按照下图中红框所示进行操作。
需要安装EPPlus
在这里插入图片描述

2、插入图片进已经存在的Excel中

        public void WriteDataInExcelByEpplus(string filePath,string imagePath){//需要加这一句,不然会报错OfficeOpenXml.ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial;//通过指定路径创建工作簿对象OfficeOpenXml.ExcelPackage package = new OfficeOpenXml.ExcelPackage(filePath);//获取该工作簿的第一个工作表OfficeOpenXml.ExcelWorksheet worksheet = package.Workbook.Worksheets[0];//从指定位置读取图片//System.Drawing.Image image = System.Drawing.Image.FromFile(imagePath);//定义一个图片对象var pic = worksheet.Drawings.AddPicture("logo", imagePath);//图片放置的位置。//第1个参数:从第2行下边框开始;第2个参数:偏移行的像素距离;第3个参数:从第0列开始右边框;第4个参数:偏移列的像素距离  pic.SetPosition(2, 10, 0, 10);//图片的大小设置。设置图片的宽度和高度pic.SetSize(90, 100);//保存工作簿package.Save();}
        private void button4_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();DialogResult result = openFileDialog.ShowDialog();string filePath = openFileDialog.FileName;OpenFileDialog openFileDialog1 = new OpenFileDialog();DialogResult result1 = openFileDialog.ShowDialog();string imagePath = openFileDialog.FileName;objExcelRW.WriteDataInExcelByEpplus(filePath, imagePath);}

如果需要程序创建新的Excel,只需将上面相应的代码更改为下面这样即可。

            OfficeOpenXml.ExcelPackage excelPackage = new OfficeOpenXml.ExcelPackage();OfficeOpenXml.ExcelWorksheet excelWorksheet = excelPackage.Workbook.Worksheets.Add("123");excelPackage.SaveAs(@"C:\Users\new\Desktop\0902.xlsx");

3、效果展示

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 外包服务商靠谱吗?一文教你火眼金睛辨真相
  • Etherpad在线文档协作编辑工具
  • 【IOS兼容】IOS/IE new Date() 返回结果为invalid date
  • 微信支付商家转账到零钱:快速开通攻略及功能全解
  • 探索前沿科技:在本地系统上安装和使用Style TTS2进行高质量语音合成
  • word宏的概念
  • 《Python 面试热门问题五》
  • C++:类型转换
  • Linux之多线程概念
  • 深度学习5从0到1理解RNN(包括LTSM,GRU等):内容丰富(下)
  • Ubuntu22.04版本左右,开机自动启动脚本
  • 7个流行的开源数据治理工具
  • 「图::存储」链式邻接表|链式前向星(C++)
  • Python世界:输入输出之回文串判别实践
  • 如何使用python抓包,附代码
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 《剑指offer》分解让复杂问题更简单
  • 【RocksDB】TransactionDB源码分析
  • Android 架构优化~MVP 架构改造
  • Android系统模拟器绘制实现概述
  • Angular 4.x 动态创建组件
  • C++类的相互关联
  • IDEA常用插件整理
  • Intervention/image 图片处理扩展包的安装和使用
  • js学习笔记
  • MySQL几个简单SQL的优化
  • React-redux的原理以及使用
  • sessionStorage和localStorage
  • Spring Cloud中负载均衡器概览
  • Swift 中的尾递归和蹦床
  • vue-router 实现分析
  • 多线程事务回滚
  • 浮动相关
  • 记一次删除Git记录中的大文件的过程
  • 坑!为什么View.startAnimation不起作用?
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 微信小程序开发问题汇总
  • Java数据解析之JSON
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​ubuntu下安装kvm虚拟机
  • #pragma data_seg 共享数据区(转)
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (九)c52学习之旅-定时器
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (转)linux下的时间函数使用
  • (转)Sublime Text3配置Lua运行环境
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .Net Core中Quartz的使用方法