在处理Excel文件时,经常需要从代码中打开工作表并修改单元格的值。这通常涉及到复杂的语法,使得代码难以记忆和维护。为了简化这个过程,可以创建一个封装了Excel.Worksheet对象的类,并提供一个操作符重载,使得代码更加直观和易于理解。
ExcelCell类封装了Excel.Worksheet对象,允许访问单个单元格。以下是类的定义:
using Office = Microsoft.Office.Core;
using Excel = Microsoft.Office.Interop.Excel;
public class ExcelCell : Object
{
private Excel.Worksheet oSheet;
public ExcelCell(Excel.Worksheet oSheet)
{
this.oSheet = oSheet;
}
public object this[int row, int column]
{
get
{
if (oSheet == null)
throw new InvalidOperationException("Excel.Worksheet reference is null.");
return ((Excel.Range)oSheet.Cells[row, column]).Value2;
}
set
{
if (oSheet == null)
throw new InvalidOperationException("Excel.Worksheet reference is null.");
((Excel.Range)oSheet.Cells[row, column]).Value2 = value;
}
}
public Excel.Range GetRange(int row, int column)
{
if (oSheet == null)
throw new InvalidOperationException("Excel.Worksheet reference is null.");
return (Excel.Range)oSheet.Cells[row, column];
}
}
注意:在项目中使用此类之前,确保已经加载了Microsoft.Office.Core和Microsoft.Office.Interop.Excel模块作为引用。
假设已经有一个打开的Excel.Application实例和一个打开的Excel.Workbook实例,分别命名为oExcel和oBook。以下是如何使用ExcelCell类的例子:
ExcelCell cell = new ExcelCell((Excel.Worksheet)oBook.Worksheets[1]);
cell[4, 2] = "happy";
cell[4, 4] = "day";
int cellValue = Convert.ToInt32(cell[4, 5]);
这样,就可以通过简单的索引操作来设置和读取单元格的值,大大简化了代码。