您的位置:首页 > 编程语言 > C#

基于COM组件方式读取Excel文件内容(C#版)

2014-05-27 21:26 656 查看
新建Win32 Console Application (C#),添加COM引用Microsoft Office Excel 15.0 Object Library (Office 2013对应版本15.0)

完整示例代码如下

using System;
using Microsoft.Office; // Add new reference

namespace ExcelReader
{
class Program
{
static void Main(string[] args)
{
ExcelReader er = new ExcelReader("F:/data.xls");
for(int i=1;i<=er.RowCount;++i)
{
for(int j=1;j<=er.ColCount;++j)
{
Console.Write("{0}\t",er.GetCellContent(i,j));
}
Console.WriteLine();
}
er.Close(); // Exit Excel process and release resources
Console.ReadKey();
}
}

class ExcelReader
{
private Microsoft.Office.Interop.Excel._Application xlsApp = null;
private Microsoft.Office.Interop.Excel.Sheets sheets = null;
private Microsoft.Office.Interop.Excel.Worksheet workSheet = null;
private Microsoft.Office.Interop.Excel.Workbook workBook = null;
public int RowCount { get; set; }
public int ColCount { get; set; }

public ExcelReader(string strXlsPath)
{
xlsApp = new Microsoft.Office.Interop.Excel.Application();
object omv = System.Reflection.Missing.Value;
workBook = xlsApp.Workbooks.Open(strXlsPath, omv, omv, omv, omv, omv, omv, omv, omv, omv, omv, omv, omv, omv, omv);
sheets = workBook.Worksheets;
workSheet = (Microsoft.Office.Interop.Excel.Worksheet)(sheets.get_Item(1));
RowCount=workSheet.UsedRange.Rows.Count;
ColCount = workSheet.UsedRange.Columns.Count;
}

public void Close()
{
if (xlsApp != null)
{
if (workBook != null)
{
if (workSheet != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
workSheet = null;
}
if (sheets != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheets);
sheets = null;
}
workBook.Close(false, Type.Missing, Type.Missing);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
workBook = null;
}
}
xlsApp.Application.Workbooks.Close();
xlsApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsApp);
xlsApp = null;
GC.Collect();
}

public dynamic GetCellContent(int row,int col)
{
Microsoft.Office.Interop.Excel.Range rng = workSheet.Cells[row, col];
return rng.Text;
}
}

}


注意使用完毕后调用Close方法以退出Excel进程。

运行结果



点击领取楼主
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# excel