本文主要讲解程序中打开Excel文档,读写Excel文档可以参照前章:

C#读写Excel实践笔记

C#使用NPOI读写Excel的注意事项

如果只是单纯的打开Excel文档,建议使用:

System.Diagnostics.Process.Start("EXECL.EXE", @"C:\Users\test.xls");

因为它不会留下后台没用进程。

如果需要跳转到相应的sheet或者单元格,只能使用COM了。坏处就是如果不清理就会留下后台进程。

参照需要引入COM:Microsoft Excel 14.0 Object Library 或者Microsoft Excel 16.0 Object Library

命名空间:Microsoft.Office.Interop.Excel

        private static Application _app = null;
private static Dictionary<string, Workbook> _bookDic = new Dictionary<string, Workbook>(); public static void Open(string path, string sheetName, int row = , int column = )
{
if (_app == null)
{
_app = new Application();
} Workbook workbook = null;
if (_bookDic.ContainsKey(path))
{
workbook = _bookDic[path];
}
else
{
workbook = _app.Workbooks.Open(Filename: path, ReadOnly: false);
_bookDic.Add(path, workbook);
} var workSheet = workbook?.Worksheets?.getSheetByName(sheetName);
if (workSheet != null)
{
workSheet.Application.Visible = false;
workSheet.Application.Visible = true; workSheet.Application.DisplayAlerts = false;
// 为了切换WorkBook,这步非常关键。
// 不然会出异常:0x800A03EC
workSheet.Application.ActiveWorkbook.Activate(); workbook.Activate();
workSheet.Select();
workSheet.Cells[row, column]?.Activate(); workSheet.Application.DisplayAlerts = true; System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
}
} private static Worksheet getSheetByName(this Sheets workSheets, string sheetName)
{
foreach (Worksheet sheet in workSheets)
{
if (sheet.Name == sheetName)
{
return sheet;
}
} return null;
} public static void Dispose()
{
try
{
if (_app != null)
{
foreach (var book in _bookDic)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(book.Value.Worksheets);
System.Runtime.InteropServices.Marshal.ReleaseComObject(book.Value);
} _app.Workbooks.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(_app.Workbooks); _app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(_app);
}
}
catch (Exception e)
{
// throw e;
}
}

Dispose方法如果忘记执行,哪怕Excel你关闭了,进程中还是会留下一个Excel后台进程。

使用COM打开Excel文档注意事项的更多相关文章

  1. .net 打开Excel文档并转为DataTable

    /// <summary> /// 打开Excel文档并转为DataTable /// </summary> /// <returns></returns&g ...

  2. c#中打开Excel文档

    方法一:(调用Excel的COM组件)       在项目中打开Add Reference对话框,选择COM栏,之后在COM列表中找到"Microsoft Excel 11.0 Object ...

  3. 4位组合型Excel文档密码怎么破解

    现代社会我们会遇到各种密码,很多的密码我们一段时间不用就不知不觉的忘记了.很多的excel用户就遇到过这种情况,这个时候我们就需要一款Excel密码破解工具.Advanced Office Passw ...

  4. C#编程实现Excel文档中搜索文本

    有了在Word文档中编程实现搜索文本的经验,在Excel中实现这个功能也并非难事. 打开Excel的VBA帮助,查看Excel的对象模型,很容易找到完成这个功能需要的几个集合和对象:Applicati ...

  5. Android解析Excel文档完整示例

    MainActivity如下: package cc.testexcel; import java.io.File; import jxl.Cell; import jxl.CellType; imp ...

  6. WebBrowser打开Word文档的一些注意事项

    WebBrowser打开Word文档的一些注意事项 分类: C#word2010-03-31 21:26 5640人阅读 评论(3) 收藏 举报 webbrowser文档browser工具object ...

  7. 如何才能恢复Excel文档的打开密码

    对于一些密码的破解,最常用的方法就是“暴力破解”,也是获取密码的最后一种方法,Advanced Office Password Recovery的暴力破解能够破解复杂的Office文档密码.wps也有 ...

  8. C#操作Excel(2)-- 打开-读取Excel文档

    由于要为某软件实现导出Excel功能,故有此文. 本文的开发环境是Visual Studio 2010 ,C#, Excel 2007. 新建C#工程后打开Solution Explorer,可以看到 ...

  9. 基于DevExpress实现对PDF、Word、Excel文档的预览及操作处理

    http://www.cnblogs.com/wuhuacong/p/4175266.html 在一般的管理系统模块里面,越来越多的设计到一些常用文档的上传保存操作,其中如PDF.Word.Excel ...

随机推荐

  1. ABP中mapping中忽略属性

    创建一个XXXXProfile继承Profile,然后在构造函数中写忽略相关的,如下 public class ProductPriceDtoProfile: Profile { /// <su ...

  2. JS的call与apply的用法

    call与apply的第一个参数都是需要调用的函数对象,在函数体内这个参数就是this的值,剩余的参数是需要传递给函数的值,call与apply的不同就是call传的值可以是任意的,而apply传的剩 ...

  3. Matlab R2015b_@Ubuntu 16_安装备忘

    1.下载解压包解压 2.cd 进入文件夹,使用 sh 打开,安装过程中不要使用“网络激活” 3.mv Crack文件中的 /R2015b/bin/glnxa64 里面的三个lib*.so 到Matla ...

  4. python基础—字典的使用{}

    info = {'stu1':"lili", 'stu2':'yoyo', 'stu3':'dudu'}print(info)print(info['stu1'])info['st ...

  5. Spring 内部注入bean

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  6. Jenkins使用QQ邮箱构建邮件提醒服务

    前置条件: 已安装好Jenkins服务端 步骤: 访问Jenkins服务端(ip+端口),登录Jenkins 点击系统管理 选择管理插件 选择可选插件 搜索Mailer Plugin 点击直接安装 点 ...

  7. EL(Expression Language)表达式语言

    EL(Expression Language)表达式语言 EL的基本语法是以${开始,以}结束 为了能够方便地输出数据,EL提供了11个内置对象,其中 2个内置对象为了方便输出请求参数 param用来 ...

  8. 使用docker部署springboot应用

    1.构造Dockerfile打包文件 # from base image centos FROM centos #MAINTAINER lirenqing #Java Version #ENV JAV ...

  9. 用chrome和anywhere,配合安卓机搭建最简单的移动端页面测试。

    很多时候,我们前端在写移动端页面的时候,虽然目前chrome有调试模式,可以模拟手机的部分效果,但仍有部分效果需要直接在手机上进行页面的调试,今天就在这里推荐一个适合windows+安卓的无需连接局域 ...

  10. pip install -r requirements.txt

    生成文件 pip freeze > requirements.txt pip install --help Usage: pip install [options] <requiremen ...