Visual C# 操作 Excel 文件(二) 封裝成 MyExcel 類
上一篇介紹 Excel 的基本操作,煩瑣的程式碼,是不是令人心煩?
良好的類設計能使系統結構更加清晰,並可加強代碼的復用性和易維護性,減少開發的工作量。有鑑於此,我規劃了一個 MyExcel類,用于處理 Excel 的相關操作。
有三種打開 Excel 的方式:
1) 開啟一個新檔。
2) 開啟一個已存在的檔案。
3) 開啟一個已存在的檔案,並設定某工作表為作用中的工作表。
所以設計了三種建構方式:
aXLS = new MyExcel();
aXLS = new MyExcel(file);
aXLS = new MyExcel(file, "Sheet1");
不管存或取,都要指定單元格,而單元格的表示方式的有兩種,如:"B3" 或 [Row, Col],所以設計了如下的存取方法:
// 設定單元格的值。
SetCells(int nCol, int nRow, string szValue);
SetCells(string szRangeName, string szValue);
// 取得單元格的值。
GetCells(int nCol, int nRow);
GetCells(string szRangeName);
調用時:
aXLS = new MyExcel();
aXLS.SetCells("A1", "Hello!");
aXLS.Dispose();
完整的程式碼如下:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Reflection;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
class MyExcel
{
privateobject missing = Type.Missing;
privateExcel.Application m_aExcelApp = null;
privateExcel.Workbook m_aWB = null;
privateExcel.Worksheet m_aSheet =null;
//----------------------------------------------
public MyExcel()
{
Open("", "");
}
//----------------------------------------------
public MyExcel(string szFileName)
{
Open(szFileName, "");
}
//----------------------------------------------
public MyExcel(string szFileName, string szSheetName)
{
Open(szFileName, szSheetName);
}
//----------------------------------------------
private void Open(string szFileName, string szSheetName)
{
CreateApp();
if (m_aExcelApp == null) return;
if (szFileName != "")
{
m_aWB = m_aExcelApp.Workbooks.Open(szFileName);
}
else
{
m_aWB = m_aExcelApp.Workbooks.Add();
}
if( szSheetName == "" )
m_aSheet = (Excel.Worksheet)m_aWB.Sheets[1];
else
m_aSheet = (Excel.Worksheet)m_aWB.Sheets[szSheetName]; // 設定為ActiveSheet
}
//----------------------------------------------
private void CreateApp()
{
try
{
m_aExcelApp = new Excel.Application();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
m_aExcelApp = null;
}
}
//----------------------------------------------
public void Dispose()
{
if (m_aExcelApp == null) return;
m_aWB.Close();
m_aExcelApp.Workbooks.Close();
m_aExcelApp.Quit();
ReleaseObject(m_aWB);
ReleaseObject(m_aExcelApp);
m_aWB = null;
m_aExcelApp = null;
}
//----------------------------------------------
private void ReleaseObject(object aObj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(aObj);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
GC.Collect();
}
}
//----------------------------------------------
public void SetCells(int nCol, int nRow, string szValue)
{
m_aSheet.Cells[nRow, nCol] = szValue;
}
//----------------------------------------------
public void SetCells(string szRangeName, string szValue)
{
Excel.Range aRange = m_aSheet.get_Range(szRangeName,missing);
aRange.Value2 = szValue;
}
//----------------------------------------------
public string GetCells(int nCol, int nRow)
{
Excel.Range oRange = (Excel.Range)m_aSheet.Cells[nRow, nCol];
if (oRange.Value2 == null)
return "";
else
return oRange.Value2.ToString();
}
//----------------------------------------------
public string GetCells(string szRangeName)
{
if (szRangeName == "") return "";
try
{
Excel.Range oRange = m_aSheet.get_Range(szRangeName,missing);
if (oRange.Value2 == null)
return "";
else
return oRange.Value2.ToString();
}
catch
{
return "";
}
}
//----------------------------------------------
}
Open() 是整個核心,它會建立 Application 及 Workbook,並設定作用中的WookSheet。不再使用時,記得要呼叫 Disponse() ,釋放所引用的 COM 對象。
Visual C# 操作 Excel 文件(二) 封裝成 MyExcel 類相关推荐
- python 通过openpyxl来操作Excel文件(二 ):写入Excel文件
这篇文章讲python 通过openpyxl来写入Excel文件,不清楚python怎么读取Excel文件的小伙伴可以去看下我的另一篇文章 传送门https://blog.csdn.net/i_cof ...
- C#操作Excel文件(转)
摘要:本文介绍了Excel对象.C#中的受管代码和非受管代码,并介绍了COM组件在.net环境中的使用. 关键词:受管代码:非受管代码:Excel对象:动态连接库 引言 Excel是微软公司办公自动化 ...
- c语言从excal读取字符串,C语言操作EXCEL文件(读写)
C语言操作EXCEL文件(读写) 本文主要介绍通过纯C语言进行EXCEL的读写操作:(修改时间2018.08.28,如果运行结果均是0,请看文章最后一节) C语言读操作 C语言写操作 在之前需要使用C ...
- C语言操作EXCEL文件(读写)
C语言操作EXCEL文件(读写) 本文主要介绍通过纯C语言进行EXCEL的读写操作:(修改时间2018.08.28,如果运行结果均是0,请看文章最后一节) C语言读操作 C语言写操作 在之前需要使用C ...
- C#在客户端和服务端操作Excel文件
一.在客户端把数据导入到Excel文件步骤 1.创建Excel application对象,打开或生成Excel文件 //服务端创建StringBuilder对象 System.Text.St ...
- php删除excel文件,php操作excel文件的方法小结
php操作excel文件的方法小结 php操作excel文件的方法有哪些?就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网! 一.php,不用COM,生成excel文件 ...
- 详解Python操作Excel文件
前言 本篇文章主要总结了一下利用python操作Excel文件的第三方库和方法. 常见库简介 1.xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. 地 ...
- java excel导出2007_java操作excel文件,实现批量导出,和导入
一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...
- Java生成和操作Excel文件
JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...
- hssfwork 导出excel 文件已损坏_C# NPOI 操作EXCEL文件的读取和导出
在实际项目中有很多场景遇到需要操作EXCEL文件,而常用到的库就有NPOI:NPOI是开源的POI 项目的.NET版,POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目, ...
最新文章
- shiro(2)-架构与配置
- 高文、张钹、杨强隔空论道:AI精度与隐私的博弈
- 面试必备,各种技术知识集大成之项目~
- linux的rt补丁安装,微软发布补丁封杀允许Surface RT安装Linux的“漏洞”
- linux php 断点调试,PHP断点调试工具Xdebug的安装
- Deep Learning科普帖
- 001_ECharts入门
- 关于Web应用程序数据库连接的使用
- 《Exchange Server 2010 SP1/SP2管理实践》一2.2 部署域名解析网络环境
- [UE4]编程师外挂Visual Assist X
- Oracle里schema理解
- MySQL数据库管理(二)单机环境下MySQL Cluster的安装
- ssm使用全注解实现增删改查案例——EmpMapperImpl
- LeetCode数据库 178. 分数排名
- 车控APP发现安全隐患,研究人员模拟黑客入侵
- 物联网学习之路——物联网通信技术简介
- 投资组合理论的简单介绍
- Cygwin环境使用第三方ARMGCC编译eCos系统
- Mysql8.0.28-winx64安装
- 【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet 生成代码 )