使用 C# 打开和导航 Excel
使用 C# 操作 Excel 的介绍。
介绍
注意:本文已更新为与 Office 2007 交互。 我保留了旧的 .NET 1.0 解决方案,供 Office XP 下载参考(如果您使用的是旧版本的 Office)。
这是一个使用 Visual C# .NET 打开现有 Microsoft Excel 电子表格的简短介绍。 计算机必须安装 Excel 才能使此代码正常运行。 Excel 程序集用于打开和操作 Excel 电子表格。
代码解释
首先,必须将 Excel 程序集添加到项目中。 为此,您必须通过转到“项目” -> “添加引用” 菜单项来添加对 Microsoft.Office.Interop.Excel 库的引用。 转到弹出的对话框的 .NET 选项卡,然后向下滚动到 Microsoft.Office.Interop.Excel 列表项。 双击它并按“确定”。 这会将引用添加到您的项目中。 在代码的“using”部分中,键入
using Excel = Microsoft.Office.Interop.Excel;
将程序集添加到项目后,需要创建一个新的应用程序
Excel.Application excelApp = new Excel.Application();
如果要让 Excel 对用户可见,您必须将 Visible
属性设置为 true
,默认值为 false
。
excelApp.Visible = true;
上面的代码会打开 Excel 应用程序,为了使用该应用程序,您必须通过创建一个 Workbook
对象来打开一个工作簿。 您可以使用以下代码打开一个新的空白工作簿
Excel.Workbook newWorkbook = excelApp.Workbooks.Add();
前面的代码打开一个带有单个工作表的空白工作簿。 .Add
方法可以选择一个模板对象。 如果参数为空,将使用默认模板(就像您手动打开 Excel 时一样)。
如果要打开现有文档进行编辑而不是创建一个新文档,可以使用以下代码打开 Workbook 对象:
string workbookPath = "c:/SomeWorkBook.xls";
Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath,
0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
true, false, 0, true, false, false);
前面的代码可能需要稍作解释。 workbookPath
当然是您要打开的现有电子表格的路径,如果使用 .NET 4.0 和 Office 2007 库(Microsoft.Office.Interop.Excel 库),则这是唯一需要的参数。 其余的 excelApp.Workbooks.open
参数不太明显。 以下是传递给函数的参数列表
WorkBooks.open(string Filename, object UpdateLinks, object ReadOnly, object Format, object Password, object WriteResPassword, object ReadOnlyRecommend, object Origin, object Delimiter, object Editable, object Notify, object Converter, object AddToMru, object Local, object CorruptLoad )
要查看此函数的文档,请访问 Microsoft 的网站,进一步解释该函数,网址为:http://msdn.microsoft.com/en-us/library/bb179167%28v=office.12%29.aspx
创建或打开工作簿后,您必须创建一个 Sheets
对象,该对象包含工作簿中的 Worksheets
。 以下代码将获取您先前打开的工作簿中的所有工作表。
Excel.Sheets excelSheets = excelWorkbook.Worksheets;
现在您有了 Worksheets
的集合,您必须获取单个工作表编辑数据。
string currentSheet = "Sheet1";
Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet);
在前面的代码中,您必须对 excelSheets.get_Item(string)
方法进行类型转换,因为它返回一个 object
。 现在您有了工作表,您可以使用以下代码访问各个单元格
Excel.Range excelCell =
(Excel.Range)excelWorksheet.get_Range("A1", "A1");
get_Range
函数必须接受两个参数。 如果这两个参数相等,则选择单个单元格;否则将选择一个单元格范围。 同样,您必须对该方法的返回值进行类型转换。 一旦您拥有一个单元格对象,您就可以使用 .Value2
属性设置其值,或使用任何其他属性来操作单元格范围。