本文主要讲解程序中打开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. Windows下杀掉全部的子线程

    最近遇到一个问题,就是在Windows下怎么杀掉全部的子线程,现把解决方法记录下. 问题来源: 用python执行了一个bat脚本,脚本的内容是执行一系列的adb命令,然后运行一个server.其中需 ...

  2. shell版的nginx安装

    #!/bin/bash # Name:Centos 6.4 安装nginx1.8.1 # Date:-- # Author:qifei@meizu.com Home=$(cd ``;pwd) #这个命 ...

  3. FreeCAD_DWG文件格式支持

    FreeCAD 是一款开源的三维模型制作软件,体积小.功能强大,可结合软件包划分网格进行有限元分析,上手速度极快.但也存在问题,即软件自身不支持DWG文件格式.本文介绍 FreeCAD 支持 DWG格 ...

  4. Cannot create PoolableConnectionFactory (Communications link failure The last packet sent successfu

    SQL: Cannot create JDBC driver of class '' for connect URL 使用数据库数据源的web 项目,发布后,访问数据库500报错: 浏览器端: 控制台 ...

  5. Java并发编程75道面试题及答案

    1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon( ...

  6. Vue基础之数据绑定

    我们学习一门新语言或者框架时,第一件事是什么呢,那必然是向世界say Hello. 创建一个Vue应用 话不多说,先上代码,让我们感受一下Vue的核心功能 <!DOCTYPE html> ...

  7. PAT乙级考前总结(四)

    散列相关问题 1029 旧键盘 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: ...

  8. javascript xml字符串转为json对象

    var xmlStr = '<?xml version="1.0" encoding="utf-8" ?><config><nam ...

  9. Mysql 8.0 导入txt文件操作(课程实验)

    一.实验准备: 1.实验设备:Dell laptop 7559; 2.实验环境:windows 10操作系统; 3.数据库版本:mysql 8.0; 二.实验目的: 1.将一个宠物表pet.txt文件 ...

  10. Sublime3安装及配置

    1.官网下载 2.安装后输入密钥 ----- BEGIN LICENSE -----sgbteamSingle User LicenseEA7E-11532598891CBB9 F1513E4F 1A ...