C#Office.Interop.Excel.dll读写表格

2023-05-16

本文摘自:C#Office.Interop.Excel.dll读写表格_笨鸟未必先飞的博客-CSDN博客_c# microsoft.office.interop.excel

一.写入excel

/// <summary>
        /// 创建一个Excel表格
        /// Excel中形如Cells[x][y]的写法,前面的数字是列,后面的数字是行!
        /// Excel中的行、列都是从1开始的,而不是0
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        private void btn_CreateExcel_Click(object sender, EventArgs e)
        {
            //创建一个文档实例
            Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
            app.DisplayAlerts = false; //在程序运行时不被提示和警报消息打扰
            app.Workbooks.Add(true);
            app.ActiveSheet.Name = "总成绩统计表";       //工作表名

            //合并单元格
            Range range = app.get_Range("B2", "D2");   //合并B1~D1的位置
            range.ClearComments();   //清空要合并的区域
            range.MergeCells = true;  //合并单元格
            app.Cells[2][2].Value = "成绩统计表";      //设置单元格(刚刚合并的单元格)的内容
            app.Rows[2].RowHeight = 27;    //设置表格第二行的行高为27(磅)
            app.Rows[2].HorizontalAlignment = XlVAlign.xlVAlignCenter;    //设置表格第二行的内容居中
            

            app.Rows[2].RowHeight = 27;    //设置表格第二行的行高为27(磅)
            app.Rows[2].HorizontalAlignment = XlVAlign.xlVAlignCenter;    //设置表格第二行的内容居中
            app.Rows[3].RowHeight = 27;    
            app.Rows[3].HorizontalAlignment = XlVAlign.xlVAlignCenter;
            app.Rows[4].RowHeight = 27;
            app.Rows[4].HorizontalAlignment = XlVAlign.xlVAlignCenter;
            app.Rows[5].RowHeight = 27;
            app.Rows[5].HorizontalAlignment = XlVAlign.xlVAlignCenter;
            app.Rows[6].RowHeight = 27;
            app.Rows[6].HorizontalAlignment = XlVAlign.xlVAlignCenter;

            app.Cells[2].ColumnWidth = 9;                   //设置表格中第二列的列宽为9
            app.Cells[3].ColumnWidth = 9;                   
            app.Cells[4].ColumnWidth = 9;    
            
            //给表格增加边框,外部和内部都增加了
            for(int i = 2; i< dataGridView1.Rows.Count +  4;i++)
            {
                Range range1;
                range1 = app.get_Range("B" + i.ToString(), "D" + i.ToString());
                range1.Borders.LineStyle = XlLineStyle.xlContinuous;
            }

            for (int i = 0; i < dataGridView1.Rows.Count; i++)        //行
            {
                for (int j = 0; j < dataGridView1.Columns.Count; j++) //列
                {
                    app.Cells[j + 2][3] = dataGridView1.Columns[j].HeaderText;   //将dataGridView 中的列标题写入表格
                    app.Cells[j + 2][i + 4] = dataGridView1.Rows[i].Cells[j].Value;      //将dataGridView 中的三行数据写入表格
                } 
            }

            try
            {
                //设置新建表格的保存路径以及名称
                string path = "C:\\Users\\Administrator\\Desktop\\成绩表.xlsx";
                app.ActiveWorkbook.SaveAs(path);
                app.Quit();
                app = null;
                MessageBox.Show("创建表格成功");
            }
            catch(Exception ex)
            {
                MessageBox.Show("创建表格失败" + ex.Message);
            }
            
        }

二.读excel

 /// <summary>
        /// 读Excel表格,更新dataGridView显示
        /// ws.Cells[i,j] ,i是行,j是列
        /// ws.Cells[i][j],i是列,j是行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_ReadExcel_Click(object sender, EventArgs e)
        {

            OpenFileDialog openfile = new OpenFileDialog();

            openfile.Filter = "Excel 文件(*.xls;*.xlsx)|*.xls;*.xlsx";       //设置删选器
            openfile.Title = "打开";                         //对话框表标题
            openfile.RestoreDirectory = true;                //下次打开的是上次选择的目录
            if (openfile.ShowDialog() == DialogResult.OK)
            {
               
                object missing = System.Reflection.Missing.Value;
                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
                Workbook wb = null;
                //以只读的形式打开Excel文件
                try
                {
                    wb = excel.Workbooks.Open(openfile.FileName, missing, true, missing, missing, missing,
                                                    missing, missing, missing, true, missing, missing, missing, missing, missing);
                }
                catch(Exception ex)
                {
                    MessageBox.Show("打开表格文件失败" + ex.Message);
                }
                //获取第一个工作表
                Worksheet ws = wb.Worksheets.get_Item(1);
                int rowsint = ws.UsedRange.Cells.Rows.Count;   //获取行数
                int colCount = ws.UsedRange.Cells.Columns.Count;//获取列数


                //将Excel表格中的值更新到Excel
                //因为我在程序初始化时已经设置dataGridView了行和列标题,所以这里直接读取行的数据更新一下dataGridView即可。没有Add行和更新列标题
                for (int i = 4; i <= rowsint + 1; i++)   //行,从表格的第四行开始循环
                {
                    for (int j = 2; j <= colCount + 1; j++)
                    {
                        dataGridView1.Rows[i - 4].Cells[j - 2].Value = ws.Cells[i,j].Value;
                    }
                }                           
            }            
        }

关于Office.Interop.Excel.dll详细信息,参考微软:Microsoft.Office.Interop.Excel Namespace | Microsoft Learn

参考:使用Microsoft.Office.Interop.Excel批量编辑Excel文件_xyypublic的博客-CSDN博客_microsoft.office.interop.excel

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#Office.Interop.Excel.dll读写表格 的相关文章

  • 非托管代码调用 vb.net 回调

    我正在将处理 COM 对象事件的 vb net 应用程序 可能用 VB6 编写 从框架 1 1 升级到 WPF 2 0 3 5 代码 为简洁起见 简化了对象名称 public class MyClass Private WithEvents
  • 空格键在 Excel VBA 编辑器中的行尾不起作用

    我将 Personal xlsb 移至新笔记本电脑 但遇到了一个奇怪的问题 空格键在行尾不起作用 除非它是完全空的行 示例 1 不起作用的示例 不工作 示例 2 工作示例 会工作 当我按空格键时 文本选择指针没有移动 但位置指示器在原始位置
  • 从html中获取属性字符串值

    我正在构建一个宏来使用从网站提取数据vba questions tagged vba 目前 我可以使用元素语法轻松地从表内容中获取值 例如obj getElementsByTagName td innerText 但是 当某些单元格中有一些
  • 如何检查单元格是否为空 (Excel\VisualC#)

    我的目标是逐行检查Sheet1为了发现有多少行 所以我放了一个 do while 一旦到达空白单元格就应该停止 Example 第 1 行数据第2行数据第3行数据第4行数据第5行数据 第 6 行数据第7行数据 在本例中 我只需要前 5 行
  • Excel VBA:通过快捷键运行打开文档后宏挂起,但从 VB 编辑器运行完美

    我遇到了一个奇怪的问题 我决定分配一个键盘快捷键Ctrl Shift P我的 VBA 例程之一 该例程假设打开一个现有的 Excel 工作簿 复制一些信息并 SaveAs另一个名字 当我在 Visual Basic 编辑器中点击 播放 时
  • 使用 Apache POI 将结果集转换为 Excel (*.xlsx) 表

    我正在尝试写结果集到 Excel xlsx 表使用 Apache Poi Office Excel 中的无效表对象错误 但是 即使它写入 Excel 文件时没有任何错误 但当我尝试在 Office Excel 2013 中打开它时 它会显示
  • Rails 4/5 发送动态 ActionMailer::Base.mail 电子邮件,附件标记为 Noname

    我看过类似的帖子 主要涉及通过创建视图和控制器来发送附件 例如 电子邮件中的 PDF 附件称为 Noname https stackoverflow com questions 12816042 pdf attachment in emai
  • 如何在 C# 中将 excel ListObject 添加到给定工作表?

    我目前正在 C 中开发一个 Excel 插件 其中包含多种方法 表值函数 可供 Excel 用户和程序员 VBA 使用 如何编写一个方法 将新的 ListObject Excel 表 添加到给定的 Excel 工作表 并将给定的 DataT
  • 使用 SAS 导出到 Excel

    假设我有 2 个 SAS 数据集 test1 sas 和 Test2 sas 现在我想将这2个数据集导出到Excel中 其中Excel文件Sheet1中将有test1 sas数据 Sheet2中将有test2 sas数据 怎么做 从 开始这
  • 从单个应用程序中的多个线程调用 dll 函数是否安全?

    我正在 Delphi 2009 中编写一个服务器应用程序 它实现了多种类型的身份验证 每种身份验证方法都存储在单独的 dll 中 第一次使用身份验证方法时 会加载适当的 dll 仅当应用程序关闭时 DLL 才会被释放 在服务器线程 连接 之
  • 链接到大地址感知 DLL

    假设我有一个使用 LARGEADDRESSAWARE 链接器标志集构建的 DLL 现在我有一个动态链接到该 DLL 的应用程序 这是否会使我的应用程序具有大型地址意识 如果不是 那么为任何 DLL 设置此标志是否有意义 讨论here htt
  • 列表框错误“无法设置列表属性。属性值无效。”

    我有一个带有列表框 文本框 组合框和保存按钮的用户表单 下面是我的保存按钮代码 Private Sub cmdsave Click Dim x As Integer x Me ListBox1 ListCount If Me cmbtran
  • 如何填充上次保存的用户和文件的上次保存日期

    我有下面的代码从文件夹中获取文件名 Sub GetFileNames Assessed As T2 Dim sPath As String sFile As String Dim iRow As Long iCol As Long Dim
  • Python:使用 python 运行 Excel 宏

    我需要通过 python 运行 Excel 宏 但总是收到以下错误 result self oleobj InvokeTypes dispid LCID wFlags retType argTypes args pywintypes com
  • VC9 和 VC8 库兼容性

    原来的问题是在那里问的 http www ogre3d org phpBB2 viewtopic php t 44832 http www ogre3d org phpBB2 viewtopic php t 44832 有人问 虽然我想在
  • excel中的多轴折线图

    我正在寻找类似于下图中的多轴折线图 这是由 amcharts 制作的 JavaScript 图表 excel有没有可以绘制图表的选项 请注意 有 3 个 Y 轴和 3 个折线图 可让您比较数据 是否有可能获得超过 3 个数据点 每个数据点在
  • NET/COM 互操作的 ref string[] 内存泄漏

    我最近发现一个非常奇怪的 对我来说 内存泄漏IEnumString http msdn microsoft com en us library ms693735 28VS 85 29 aspxC 使用的 COM 对象 具体来说 使用已包含先
  • 双击事件 - 多个范围

    我正在寻找为双击事件在多个范围内进行编码的最佳方法 Private Sub Worksheet BeforeDoubleClick ByVal Target As Range Cancel As Boolean If Not Interse
  • 使用 Apache POI 和 Java 创建 Excel (.xlsx) 文件后文件损坏

    我已经使用 Apache POI API 使用 Java 成功创建了 xlsx 格式的工作簿 Excel 我的代码如下 在 D 盘创建一个名为 RiponAlWasim xlsx 的文件 Workbook wb new XSSFWorkbo
  • 双击打开 Excel 工作簿时,Excel 2010 AddIn 未加载

    我为 Excel 2010 编写了一个加载项 如果我从 开始 菜单打开 Excel 它可以正常工作 但是 如果我双击 Excel 工作簿 则无法加载 AddIn 我签入了ThisAddIn cs 方法InternalStartup 没有参与

随机推荐

  • WkwebView调节字体大小获取高度

    一般新闻阅读类APP都有一个功能是调节字体大小 xff0c 而这类新闻界面一般是由webVIew来实现的 xff0c 实际上就是怎么实时调节webView的字体大小 写在前面 前后实验过大概有三四种方法 xff0c 各有各自的优缺点 xff
  • 相机拍照界面取景框

    需求 项目中需要拍名片 xff0c 为了尽可能多的去除其他信息 xff0c 且宽高比更贴近名片真实比例 xff0c 需要自定义一个取景框 xff0c 只拍摄取景框内的画面 实现 这个个性化需求比较强 xff0c 在系统的UIImagePic
  • iOS开发规范

    iOS代码编写规范 Git的使用 iOS进阶开发 目的 了利于项目维护以及规范开发 xff0c 促进成员之间Code Review的效率 xff0c 故提出以下开发规范 xff0c 如有更好的建议 xff0c 欢迎提出 qq 2807425
  • web登陆退出测试点总结

    根据自己的测试经历 xff0c 又阅读了一些关于登陆测试的资料 xff0c 对web 登陆退出测试点做了一下总结 xff1a 界面测试 xff1a 1 登陆页面显示是否正常 xff1a 文字和图片能否正常显示 xff0c 相应的提示信息是否
  • 人工智能会取代程序员吗?

    多亏了人工智能 xff08 AI xff09 xff0c 软件将在未来自行编写 至少 xff0c 这就是谷歌首席执行官桑达尔 皮查伊 xff08 Sundar Pichai xff09 对软件开发未来的看法 他是对的 xff01 这并不能使
  • 解决kotlin与databinding同时使用时 Unresolved reference问题(Unresolved reference RN)

    添加一下代码 xff1a 编译出现以下错误 需要添加一下代码 在app gradle中加入以下内容 xff0c 其中版本号 apply plugin 39 kotlin kapt 39 kapt generateStubs 61 true
  • QQ登录 110401:请求的应用不存在

    我出现的原因是在AndroidManifest里边没有把应用的名称改为与QQ开放平台上创建应用的名称相同
  • @Value和@Bean注解的执行顺序问题

    Springboot中使用 64 Configruation和 64 Bean一起将Bean注册到ioc容器中 xff0c 而 64 Value常用于将yml配置文件中的配置信息注入到类的成员变量中 当 64 Configruation 6
  • MTK平台 Sensor Hub配置(以stk3x3x光感为例)(Android 9.0)

    Sensor Hub 配置 alps mediateksample PROJECT ProjectConfig mk MTK SENSOR SUPPORT 61 yes 必须配置 MTK SENSOR HUB SUPPORT 61 yes
  • qemu-system-x86_64(1)-Linux手册页

    qemu system x86 64 名称概要描述选项printf 96 96 letmein 39 39 gt mypasswd txt qemu system x86 64 object secret id 61 sec0 file 6
  • 设置CMD窗口

    文章目录 1 图形界面设置1 1 打开CMD窗口1 2 点击属性设置 2 命令mode修改2 1 查看控制台信息2 2 修改控制台参数 3 注册表方式修改3 1 打开注册表3 2 修改参数 1 图形界面设置 1 1 打开CMD窗口 按下wi
  • 学习之旅——Android的onNewIntent()

    onNewIntent何时会被执行 xff1a 前提 xff1a 在该Activity的实例已经存在于Task和Back stack中 或者通俗的说可以通过按返回键返回到该Activity 时 当使用intent来再次启动该Activity
  • Getting Exception org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast to org.apache.logging.l

    把下面的依赖去掉即可 xff01 log4j to slf4j 2 0 2 jar log4j to slf4j 2 0 2 sources jar log4j slf4j impl 2 0 2 jar log4j slf4j impl 2
  • C# 条件编译 (#if 和 Conditional)

    本文转载自 xff1a C 条件编译 xff08 if 和 Conditional xff09 腾讯云开发者社区 腾讯云 本文主要讲述C 中 xff0c 使用 if 和 Conditional 特性来按条件编译代码的不同原理和适用场景 本文
  • 网络时延的几个概念

    假设一个数据包X从路由器A到路由器B xff0c 我们来分析下 xff0c 在这种情况下 xff0c 数据包X从A到B的总时延 xff1a 当A接收到数据包时 xff0c 会检测数据包的首部 xff0c 决定将该数据包导向哪一个链路上 xf
  • C#自动引用Debug | Release版本的dll

    1 其它模块的的dll路径 存放路径 解决方案 43 lib 文件夹下 xff0c Debug存放Debug文件 xff0c Release目录存放Release文件 2 其他项目中如何自动加载对应版本的dll文件 文本格式打开 cspro
  • Visual Studio 远程调试

    条件 xff1a 应用程序和本机调试机器需在同一局域网内 1 找vs里面的远程工具文件夹 xff0c 复制到目标电脑 2 然后点进去进行对应的位数 xff0c 找下图此文件 xff0c 右键管理员运行 xff0c 并设置选项 xff08 部
  • c#离线安装NuGet包

    1 前言 在开发c 程序时 xff0c 有时会用到第三方库 xff0c 可以在VS中从NuGet直接下载 xff0c 但是这是在开发环境联网的情况下 xff0c 如果开发环境处于无网络连接的时候 xff0c 那应该如何安装NuGet包呢 x
  • C#如何实现读写ini文件

    本文转载自 xff1a https www jb51 net article 235534 htm 一 c 读写Ini操作类 using System using System Collections Generic using Syste
  • C#Office.Interop.Excel.dll读写表格

    本文摘自 xff1a C Office Interop Excel dll读写表格 笨鸟未必先飞的博客 CSDN博客 c microsoft office interop excel 一 写入excel lt summary gt 创建一个