65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C# 打开和导航 Excel

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.57/5 (131投票s)

2003 年 10 月 3 日

CPOL

3分钟阅读

viewsIcon

2129791

downloadIcon

28541

使用 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 属性设置其值,或使用任何其他属性来操作单元格范围。

© . All rights reserved.