C# 如何获取处于运行中的Excel、Word对象

今日在写项目的过程中,涉及到对Excel和Word的操作,考虑到程序的健壮性,需要对一些特殊情况作出处理,通常情况下,Excel和Word是通过winform下的openfiledialog打开的,这种情况去获取对于对象是十分方便的。

但是有些Word或者Excel由用户自己先行打开了,后面程序再去打开这些文档,就会出现问题,这种情况需要获取Excel或者Word对象该怎么办呢?

通过查阅资料发现,以下代码可以解决。

private void OpenFileDialog()
{
  // 声明一个对象
  Excel._Application objExcel;

  OpenFileDialog fileDialog = new OpenFileDialog();
  fileDialog.Multiselect = false;
  fileDialog.Title = "请选择文件";

  // 此处只打开word类型文件,对过滤参数进行设置
  fileDialog.Filter = "Excel文件|*.xls;*.xlsx";
  if ( fileDialog.ShowDialog() == DialogResult.OK )
  {
    try
    {
      // 获取到当前处于活跃状态的Excel对象(即已经打开的)
      objExcel = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
      // 根据选择到的文件名去匹配工作对象
      Excel._Workbook workbook = _Excel.Workbooks.Open(fileDialog.FileName);

      objExcel.Visible = true;

    }
    catch (System.Runtime.InteropServices.COMException e)
    {
      // 假如没有被打开,则new一个对象
      objExcel = new Excel.Application();
      // 根据选择到的文件名去匹配工作对象
      Excel._Workbook workbook = objExcel.Workbooks.Open(fileDialog.FileName);

      objExcel.Visible = true;

    }
  }
}

利用try catch,首先获取处于活跃状态的对象,获取到Excel对象,然后用Excel文件名去匹配,获取到工作对象。如果抛出异常,则说明目前没有Excel被打开,于是新建一个对象来操作。

注意,此处catch里面的异常,必须要写为"System.Runtime.InteropServices.COMException",因为如果仅仅是Exception的话,如果捕捉到其他异常,也会执行catch里面的操作。

我们的本意是如果没有处于活跃状态的Excel才进行new操作,而不是任何异常都进行new对象操作。

补充:C# 获取打开的EXCEL中某列的行数

背景

在通过C#操作EXCEL时

获取行数

int iRowCount = worksheet.get_Range("A65535", oMissing).get_End(MExcel.XlDirection.xlUp).Row;

改为:

int iRowCount = worksheet.get_Range("A65535", "A65535").get_End(MExcel.XlDirection.xlUp).Row;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

时间: 2021-01-13

C# 创建Excel气泡图的实例代码

气泡图(Bubble Chart)是可用于展示三个变量之间的关系.通过绘制x 值, y 值和大小值即可确定图表中气泡的坐标及大小.下面通过后端C#代码及VB.NET代码展示如何来实现在Excel中创建气泡图的方法. 程序环境: Visual Studio .Net FrameWork 4.5.1 Spire.XLS for .NET Version 10.12.0 注:编辑代码前先将Spire.Xls.dll(dll文件可在解压包Bin文件夹下获取)添加引用至VS程序,可通过官网下载或者Nuge

C# 使用 OleDbConnection 连接读取Excel的方法

Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection. (1)Sqlconnetcion类的对象连接是SQL Server数据库: (2)OracleConnection类的对象连接Oracle数据库: (3)OleDbConneetion连接支持OLEDB的数据库,如Access: (4)OdbcConnection类的对象连接支持ODBC的数据库. 与数据库的所有通讯都是通过Connectio

C#实现DataSet内数据转化为Excel和Word文件的通用类完整实例

本文实例讲述了C#实现DataSet内数据转化为Excel和Word文件的通用类.分享给大家供大家参考,具体如下: 前不久因为项目的需要写的一个C#把DataSet内数据转化为Excel和Word文件的通用类,这些关于Excel.Word的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后 生成Xml格式,再导入数据库!有些屏蔽内容没有去掉,保留下来方便学习参考用之. 最后请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性. using Syste

C#中DataGridView导出Excel的两种方法

第一种是用数据流导出: #region SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Execl files (*.xls)|*.xls"; saveFileDialog.FilterIndex = 0; saveFileDialog.RestoreDirectory = true; saveFileDialog.CreatePrompt = true; saveFileDi

C#实现将数据导出到word或者Excel中的方法

本文实例讲述了C#实现将数据导出到word或者Excel中的方法.分享给大家供大家参考.具体如下: void OutToWord() { if (dataGridView1.Rows.Count >= 1) { string tempstr =""; Stream myStream; SaveFileDialog dlg =new SaveFileDialog(); dlg.Filter = "(Word文件)*.doc|*.doc"; //dlg.Filte

c# 根据NPOI 读取一个excel 文件的多个Sheet

大家都知道NPOI组件可以在你本地没有安装office的情况下来 读取,创建excel文件.但是大家一般都是只默认读取一个excel文件的第一个sheet.那么如果要读取一个excel 的所有sheet 要怎么做呢? 下面就来告诉大家如何操作NPOI 读取excel 的所有sheet. 首先我们先讲解操作excel 单独创建的一个类,我命名为 EXECLHELP using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF

通过Javascript读取本地Excel文件内容的代码示例

读取本地Excel文件内容的Javascript代码: 复制代码 代码如下: <script type="text/javascript">function read_excel(){ var filePath="D:\abcd9.com.xls"; //要读取的xls    var sheet_id=2; //读取第2个表    var row_start=3; //从第3行开始读取    var tempStr='';    try{       

python 实现读取一个excel多个sheet表并合并的方法

如下所示: import xlrd import pandas as pd from pandas import DataFrame DATA_DIR = 'E:/' excel_name = '%s2017.xls' % DATA_DIR wb = xlrd.open_workbook(excel_name) # print(wb) # 获取workbook中所有的表格 sheets = wb.sheet_names() # print(sheets) # 循环遍历所有sheet df_28

pandas将多个dataframe以多个sheet的形式保存到一个excel文件中

要实现这个功能,可能有多种方法,我在这里记录下一个比较方便的方法: import pandas as pd writer = pd.ExcelWriter('test.xlsx') data1.to_excel(writer,sheet_name='sheet1') data2.to_excel(writer,sheet_name='sheet2') writer.save() 上面的方法会将原来的excel文件覆盖掉,假如想要对已经存在的excel文件进行修改,可以使用开源工具包(anacon

如何把一个Excel文件放到ASP页面中去?

<%set xlApp = Server.CreateObject("Excel.Application")xlApp.Visible = false ' 使服务端不出现Excel窗口.set myWorkbook = xlApp.Workbooks.Add ' 建立一个worksheet.set myWorksheet = myWorkbook.Worksheets(1)myWorksheet.Range("A1").Value = '精彩春风通讯录'myW

如何读取一个.ini文件?

<OBJECT ID="agobjOraSession" RUNAT="Server" PROGID="OracleInProcServer.XOraSession" SCOPE="Application"></OBJECT><script LANGUAGE=VBScript RUNAT=Server>Const CONST_FL_NAME = "\GetAttributeCode

Python读写/追加excel文件Demo分享

三个工具包 python操作excel的三个工具包如下,注意,只能操作.xls,不能操作.xlsx. • xlrd: 对excel进行读相关操作 • xlwt: 对excel进行写相关操作 • xlutils: 对excel读写操作的整合 这三个工具包都可以直接使用pip进行下载: sudo pip install xlrd sudo pip install xlwt sudo pip install xlutils1 xlwt的缺陷 xlwt只能创建一个全新的excel文件,然后对这个文件进行

可以读取EXCEL文件的js代码第1/2页

首页给个有中文说明的例子,下面的例子很多大家可以多测试. 复制代码 代码如下: <script language="javascript" type="text/javascript"><!-- function readExcel() { var excelApp; var excelWorkBook; var excelSheet; try{ excelApp = new ActiveXObject("Excel.Applicatio

PHPExcel简单读取excel文件示例

本文实例讲述了PHPExcel简单读取excel文件的方法.分享给大家供大家参考,具体如下: PHP Excel 2007 classes Project providing a set of classes for the PHP programming language, which allow you to write to and read from different file formats, like Excel 2007, PDF, HTML, ... This project

php生成与读取excel文件

在网站中经常会生成表格,CSV和Excel都是常用的报表格式,CSV相对来说比较简单,如果大家有疑问我会相继发布一些CSV的实例,这里主要介绍用PHP来生成和读取Excel文件. 要执行下面的函数,首先要引入一个类库:PHPExcel,PHPExcel是一个强大的PHP类库,用来读写不同的文件格式,比如说Excel 2007,PDF格式,HTML格式等等,这个类库是建立在Microsoft's OpenXML和PHP 的基础上的,对Excel提供的强大的支持,比如设置工作薄,字体样式,图片以及边

利用PHPExcel实现Excel文件的写入和读取

作为一个原本的Java党,用过PHP才知道,原来对于Excel文件的写入和读取原来可以这么简单! 利用PHP实现对于Excel的读取,主要借助于PHPExcel插件来完成. PHPExcel下载地址:PHPExcel下载 一.PHPExcel实现写入excel操作步骤 首先需要引入类文件,引入PHPExcel.php文件. 1.新建一个Excel表格(实例化PHPExcel类) 2.创建sheet(内置表) (createSheet()方法.setActiveSheet()方法.getActiv