Microsoft.Office.Interop.Excel 的简单操作

Microsoft.Office.Interop.Excel 的简单操作

  • 1、安装 Microsoft.Office.Interop.Excel
  • 2、声明引用 Microsoft.Office.Interop.Excel
  • 3、简单的新建 EXCEL 操作代码
  • 4、将 DataGridView 表数据写到 EXCEL 操作代码
  • 5、将 EXCEL 表数据读取到 C# 数据表 DataTable 操作代码

1、安装 Microsoft.Office.Interop.Excel

新建 C# 工程后,在【项目】菜单中点击【管理 NuGet 程序包】,浏览搜索 Microsoft.Office.Interop.Excel,点击下载安装。

2、声明引用 Microsoft.Office.Interop.Excel

using System.Data;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel; //指定别名

3、简单的新建 EXCEL 操作代码

            Excel.Application excelApp = new Excel.Application //定义Excel应用对象,别名以区别 C# 应用{Visible = false,//设置后台运行可见性为falseDisplayAlerts = false,//禁止弹出警告AlertBeforeOverwriting = false//禁止覆盖前弹出提醒};if (excelApp == null) return;//系统没有Excel对象Excel.Workbook workbook = excelApp.Workbooks.Add();// 添加 Excel 工作簿(Workbook)workbook.Worksheets.Add(Type.Missing, workbook.Worksheets[1], 2, Type.Missing);// 在默认的 sheet1之后添加 2 个工作表Excel.Worksheet sheet1 = (Excel.Worksheet)workbook.Worksheets[1] as Excel.Worksheet;//定义Excel工作表Excel.Worksheet sheet2 = (Excel.Worksheet)workbook.Worksheets[2] as Excel.Worksheet; Excel.Worksheet sheet3 = (Excel.Worksheet)workbook.Worksheets[3] as Excel.Worksheet; // 命名工作表sheet1.Name = "测试";sheet2.Name = "宋体标题";sheet3.Name = "黑体标题";string[] headers = new string[] { "单位", "名称", "属性", "型号", "序列号" };Excel.Range headerRange = sheet2.Range[sheet2.Cells[1, 1], sheet2.Cells[1, headers.Length]];headerRange.Value2 = headers;headerRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中headerRange.VerticalAlignment = Excel.XlHAlign.xlHAlignCenter;//垂直居中headerRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//设置边框headerRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//边框常规粗细headerRange.WrapText = true;//自动换行headerRange.NumberFormatLocal = "@";//文本格式headerRange.Font.Name = "宋体";//设置字体headerRange.Font.Size = 12;//字体大小headerRange.Font.Bold = false;//字体加粗sheet2.Columns.AutoFit();//设置列宽和数据一致headerRange = sheet3.Range[sheet3.Cells[1, 1], sheet3.Cells[1, headers.Length]];headerRange.Value2 = headers;headerRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中headerRange.VerticalAlignment = Excel.XlHAlign.xlHAlignCenter;//垂直居中headerRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//设置边框headerRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//边框常规粗细headerRange.WrapText = true;//自动换行headerRange.NumberFormatLocal = "@";//文本格式headerRange.Font.Name = "黑体";//设置字体headerRange.Font.Size = 12;//字体大小headerRange.Font.Bold = true;//字体加粗sheet3.Columns.AutoFit();workbook.SaveAs(Application.StartupPath +  @"\1234.xlsx");//保存文件workbook.Close(false);//关闭工作簿excelApp.Quit();//退出对象Marshal.ReleaseComObject(workbook);Marshal.ReleaseComObject(excelApp);//释放COM对象的引用workbook = null;excelApp = null;if (excelApp == null) MessageBox.Show("已经创建EXCEL文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

4、将 DataGridView 表数据写到 EXCEL 操作代码

  public void WriteExcelFromDgv(DataGridView dgv){Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application //定义Excel应用对象{Visible = false,//设置后台运行可见性为falseDisplayAlerts = false,//禁止弹出警告AlertBeforeOverwriting = false//禁止覆盖前弹出提醒};Excel.Workbook workbook = excelApp.Workbooks.Add();//定义Excel工作簿// Worksheet worksheet = workbook.ActiveSheet;//定义Excel工作表Excel.Worksheet worksheet = workbook.Worksheets[1];//定义默认Excel工作表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;//填写列标题worksheet.Cells[1, i + 1].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中worksheet.Cells[1, i + 1].VerticalAlignment= Excel.XlHAlign.xlHAlignCenter;//垂直居中}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.Cells[i + 2, j + 1].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中worksheet.Cells[i + 2, j + 1].VerticalAlignment= Excel.XlHAlign.xlHAlignCenter;//垂直居中 }}worksheet.Columns.AutoFit();//设置列宽和数据一致worksheet.SaveAs(Application.StartupPath + @"\DataGridViewData.xlsx");//保存文件workbook.Close(false);//关闭工作簿excelApp.Quit();//退出对象Marshal.ReleaseComObject(workbook);Marshal.ReleaseComObject(excelApp);//释放COM对象的引用workbook = null;excelApp = null;if (excelApp == null) MessageBox.Show("数据已经写入到 EXCEL 文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);}

5、将 EXCEL 表数据读取到 C# 数据表 DataTable 操作代码

        /// <summary>将 EXCEL 表数据读取到 C# 数据表 DataTable</summary>/// <param name="filePath">EXCEL 文件路径</param>/// <param name="columnsToExtract">读取列数</param>/// <param name="skipRows">跳过行数</param>/// <returns>返回数据表 dataTable </returns>public DataTable ReadExcelToDataTable(string filePath,int[] columnsToExtract, int skipRows=2){Excel.Application excelApp = new Excel.Application();Excel.Workbook workbook = excelApp.Workbooks.Open(filePath);Excel.Worksheet worksheet = workbook.Sheets[1];//第一个sheetExcel.Range usedRange = worksheet.UsedRange;int rowCount = usedRange.Rows.Count;int colCount = columnsToExtract.Length;DataTable dataTable=new DataTable();object[,] valueArray = (object[,])usedRange.Value;for (int row = skipRows; row <= rowCount; row++){DataRow dataRow = dataTable.NewRow();for (int col = 0; col < colCount; col++){int colIndex = columnsToExtract[col];dataRow[col] = valueArray[row, colCount]?.ToString() ?? string.Empty;}dataTable.Rows.Add(dataRow);}workbook.Close(false);excelApp.Quit();Marshal.ReleaseComObject(excelApp);//释放COM对象的引用return dataTable;}

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

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

相关文章

LLM 对话框组件 | 字节青训营前端开发项目

系统介绍 LLM对话框项目系统介绍 一、项目概述 选题背景随着人工智能技术的飞速发展,自然语言处理(NLP)领域取得了显著进展,其中对话系统(Dialog System)作为NLP的重要应用方向,正逐渐渗透到人们的日常生活中。从智能客服到语音助手,从智能家居到在线教育,对话系统以…

k8s命名空间和资源配额

在现代的云计算环境中&#xff0c;容器化技术已成为主流。而 Kubernetes&#xff08;简称 k8s&#xff09;作为一项开源的容器编排系统&#xff0c;广泛应用于各类场景。本文将详细介绍关于 k8s 中的命名空间和资源配额&#xff0c;帮助你更好地理解和管理你的集群资源。 k8s …

从统计学视角看机器学习的训练与推理

从统计学视角看机器学习的训练与推理 目录 引言&#xff1a;统计学与机器学习的奇妙缘分训练与推理&#xff1a;你得先学会“看数据”再“用数据”最大似然估计&#xff08;MLE&#xff09;&#xff1a;从直觉到数学证明 3.1 伯努利分布的MLE3.2 单变量高斯分布的MLE3.3 多元…

AI赋能企业协作4-NL2Sql技术路线

1.1 对话即服务的一点思考 在数智化转型的过程中&#xff0c;基于即时通信&#xff08;IM&#xff09;的协作平台正悄然成为企业智能化转型的“新基建”。协作平台天然具备高频交互、实时协同和场景化落地的特性&#xff0c;仿佛是为对话式AI量身定制的试验场——员工在熟悉的聊…

批量提取 Word 文档中的页面

如何将 Word 文档中的页面提取出来形成一个新的文档呢&#xff1f;比如将 Word 文档中的第一页提取出来、将 Word 文档中的最后一页提取出来、再或者将 Word 文档中的中间几页提取出来等等。人工的处理肯定非常的麻烦&#xff0c;需要新建 Word 文档&#xff0c;然后将内容复制…

Sqlserver安全篇之_启用TLS即配置SQL Server 数据库引擎以加密连接

官方文档 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/manage-certificates?viewsql-server-ver15&pre…

多镜头视频生成、机器人抓取、扩散模型个性化 | Big Model weekly第58期

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 01 GLM-4-Voice: Towards Intelligent and Human-Like End-to-End Spoken Chatbot 本文介绍了一种名为GLM-4-Voice的智能且类人化的端到端语音聊天机器人。它支持中文和英文&#xff0c;能够进行实时语音对话&a…

基于 Rust 与 GBT32960 规范的编解码层

根据架构设计&#xff0c;实现编解码层的代码设计 Cargo.toml 加入二进制序列化支持 # 序列化支持 ... bincode "1.3" # 添加二进制序列化支持 bytes-utils "0.1" # 添加字节处理工具 开始编码 错误处理&#xff08;error.rs&#x…

MOM成功实施分享(七)电力电容制造MOM工艺分析与解决方案(第一部分)

声明&#xff1a;文章仅用于交流学习&#xff0c;不用于商业项目实施&#xff0c;图片来源于网络&#xff0c;如有侵犯权利&#xff0c;请联系作者及时删除。 本方案旨在对电力电容&#xff08;PEC和PQM型号&#xff09;制造工艺深度分析&#xff0c;结合管理要求设计MOM相关功…

FPGA开发,使用Deepseek V3还是R1(1):应用场景

以下都是Deepseek生成的答案 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;1&#xff09;&#xff1a;应用场景 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;2&#xff09;&#xff1a;V3和R1的区别 FPGA开发&#xff0c;使用Deepseek V3还是R1&#x…

JavaWeb后端基础(3)

原打算把Mysql操作数据库的一些知识写进去&#xff0c;但是感觉没必要&#xff0c;要是现在会的都是简单的增删改查&#xff0c;所以&#xff0c;这一篇&#xff0c;我直接从java操作数据库开始写&#xff0c;所以这一篇大致就是记一下JDBC、MyBatis、以及SpringBoot的配置文件…

Pytorch实现之SRGAN+CBAM的结构设计

简介 简介:在SRGAN的残差连接中加入了CBAM注意力机制,同时设计了四类损失来训练。 论文题目:Super-resolution Generative Adversarial Networks Based on Attention Model(基于注意力模型的超分辨率生成对抗网络) 会议:2020 IEEE第六届计算机与通信国际会议 摘要:基…

移动端国际化翻译同步解决方案-V3

1.前言 因为软件出海&#xff0c;从在上上家公司就开始做翻译系统&#xff0c;到目前为止已经出了两个比较大的版本了&#xff0c;各个版本解决的痛点如下&#xff1a; V1版本&#xff1a; 主要针对的是AndroidiOS翻译不一致和翻译内容管理麻烦的问题&#xff0c;通过这个工具…

2.css简介

什么是css&#xff1a; CSS (Cascading Style Sheets&#xff0c;层叠样式表&#xff09;&#xff0c;是一种用来为结构化文档&#xff08;如 HTML 文档或 XML 应用&#xff09;添加样式&#xff08;字体、间距和颜色等&#xff09;的计算机语言&#xff0c;CSS 文件扩展名为 .…

机器人学习模拟框架 robosuite (3) 机器人控制代码示例

Robosuite框架是一个用于机器人模拟和控制的强大工具&#xff0c;支持多种类型的机器人。 官方文档&#xff1a;Overview — robosuite 1.5 documentation 开源地址&#xff1a;https://github.com/ARISE-Initiative/robosuite 目录 1、通过键盘或SpaceMouse远程控制机器人…

可终身授权的外国工具,不限次数使用!PDF转CAD的软件

最近有不少朋友问我有没有好用的CAD转换工具&#xff0c;今天就来给大家分享两款超实用的小软件&#xff0c;希望能帮到大家。 第一款软件是一款国外开发的&#xff0c;它专门用来把PDF文件转换成CAD格式&#xff0c;特别方便。 这款软件的操作非常简单&#xff0c;打开后无需安…

Ubuntu系统上部署Node.js项目的完整流程

以下是在Ubuntu系统上部署Node.js项目的完整流程&#xff0c;分为系统初始化、环境配置、项目部署三个部分&#xff1a; 一、系统初始化 & 环境准备 bash # 1. 更新系统软件包 sudo apt update && sudo apt upgrade -y# 2. 安装基础工具 sudo apt install -y buil…

Android内存优化指南:从数据结构到5R法则的全面策略

目录 一、APP 内存限制 二、内存的三大问题 2.1、内存抖动(Memory Churn) 2.1.1 频繁创建短生命周期对象 2.1.2 系统API或第三方库的不合理使用 2.1.3 Handler使用不当 2.2、内存泄漏(Memory Leak) 2.2.1 静态变量持有Activity或Context引用 2.2.2 未取消的回调或…

ffmpeg源码编译支持cuda

1.安装cuda CUDA Toolkit 11.3 Downloads | NVIDIA Developer 在选择组件的时候&#xff0c;将CUDA中的Nsight VSE和Visual Studio Integration取消勾选 不然会安装失败 2.编译ffmpeg 把cuda编译宏定义开启&#xff0c;再编译avcodec 3.编译livavutil报错struct "Cuda…

Git强制覆盖分支:将任意分支完全恢复为main分支内容

Git强制覆盖分支&#xff1a;将任意分支完全恢复为main分支内容 场景背景完整操作步骤一、前置准备二、操作流程步骤 1&#xff1a;更新本地 main 分支步骤 2&#xff1a;强制重置目标分支步骤 3&#xff1a;强制推送至远程仓库 三、操作示意图 关键风险提示&#xff08;必读&a…