如何在C#中打开一个Excel文件?

我正试图将一些VBA代码转换为C#。 我是C#的新手。 目前我正试图从一个文件夹打开一个Excel文件,如果它不存在,然后创build它。 我正在尝试像下面这样的东西。 我怎样才能使它工作?

Excel.Application objexcel; Excel.Workbook wbexcel; bool wbexists; Excel.Worksheet objsht; Excel.Range objrange; objexcel = new Excel.Application(); if (Directory("C:\\csharp\\error report1.xls") = "") { wbexcel.NewSheet(); } else { wbexcel.Open("C:\\csharp\\error report1.xls"); objsht = ("sheet1"); } objsht.Activate(); 

您需要安装Microsoft Visual Studio Tools for Office。

之后,创build通用的.NET项目,并通过“添加引用..”对话框将引用添加到COM对象Microsoft.Office.Interop.Excel.dll

 Application excel = new Application(); Workbook wb = excel.Workbooks.Open(path); 

Missing.Value是用于不必要的参数replace的特殊reflection结构

 FileInfo fi = new FileInfo("C:\\test\\report.xlsx"); if(fi.Exists) { System.Diagnostics.Process.Start(@"C:\test\report.xlsx"); } else { //file doesn't exist } 
 private void btnChoose2_Click(object sender, EventArgs e) { OpenFileDialog openfileDialog1 = new OpenFileDialog(); if (openfileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.btnChoose2.Text = openfileDialog1.FileName; String filename = DialogResult.ToString(); var excelApp = new Excel.Application(); excelApp.Visible = true; excelApp.Workbooks.Open(btnChoose2.Text); } } 

打开Excel文件

 System.Diagnostics.Process.Start(@"c:\document.xls"); 

打开一个文件,试试这个:

 objexcel.Workbooks.Open(@"C:\YourPath\YourExcelFile.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing,missing, missing); 

你必须提供那些愚蠢的“缺less”论点。 如果你在VB.Net中编写相同的代码,你不需要它们,但是你不能在C#中避免它们。

如果你说出了什么问题,或者运行时出现了问题,那么帮助你更容易。

但是从一眼就可以看出你有一些困惑。

以下几个问题不起作用。

 if (Directory("C:\\csharp\\error report1.xls") = "") 

你正在做的是创build一个新的目录对象,应该指向一个文件,然后检查是否有任何错误。

你实际做的是试图调用一个名为Directory()的函数,然后给结果赋一个string。 这是行不通的,因为1 /你没有一个名为Directory(string str)的函数,你不能指定函数的结果(你只能给一个variables赋值)。

你应该做什么(至less对于这条线)如下

 FileInfo fi = new FileInfo("C:\\csharp\\error report1.xls"); if(!fi.Exists) { // Create the xl file here } else { // Open file here } 

至于为什么Excel代码不起作用,你必须检查谷歌应该能够提供给你的Excel库的文档。

 Microsoft.Office.Interop.Excel.Application excapp; excapp = new Microsoft.Office.Interop.Excel.Application(); object misval=System.Reflection.Missing.Value; Workbook wrkbuk = new Workbook(); Worksheet wrksht = new Worksheet(); wrkbuk = excapp.Workbooks._Open(@"C:\Users\...\..._template_v1.0.xlsx", misval, misval, misval, misval, misval, misval, misval, misval, misval, misval, misval, misval); wrksht = (Microsoft.Office.Interop.Excel.Worksheet)wrkbuk.Worksheets.get_Item(2); 

你应该这样打开

  Excel.Application xlApp ; Excel.Workbook xlWorkBook ; Excel.Worksheet xlWorkSheet ; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

来源: http : //csharp.net-informations.com/excel/csharp-open-excel.htm

ruden

import

  using Excel= Microsoft.Office.Interop.Excel; using Microsoft.VisualStudio.Tools.Applications.Runtime; 

这里是使用C#打开Excel表格的代码。

  Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook wbv = excel.Workbooks.Open("C:\\YourExcelSheet.xlsx"); Microsoft.Office.Interop.Excel.Worksheet wx = excel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet; wbv.Close(true, Type.Missing, Type.Missing); excel.Quit(); 

这是一个关于如何使用C# https://www.youtube.com/watch?v= O5Dnv0tfGv4打开excel工作表的video伴侣

这是一个商业应用程序或一些爱好者/开源软件?

我问这是因为根据我的经验,所有免费的.NET Excel处理替代品都有严重的问题,原因不尽相同。 对于业余爱好者来说,我通常最终将jExcelApi从Java移植到C#并使用它。

但是,如果这是一个商业应用程序,你可以购买第三方库,比如Aspose.Cells 。 相信我,这完全是值得的,因为它节省了很多时间和时间不是免费的。

代码:

  private void button1_Click(object sender, EventArgs e) { textBox1.Enabled=false; OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Excell File |*.xlsx;*,xlsx"; if (ofd.ShowDialog() == DialogResult.OK) { string extn = Path.GetExtension(ofd.FileName); if (extn.Equals(".xls") || extn.Equals(".xlsx")) { filename = ofd.FileName; if (filename != "") { try { string excelfilename = Path.GetFileName(filename); } catch (Exception ew) { MessageBox.Show("Errror:" + ew.ToString()); } } } } 

为了从C#应用程序中编辑Excel文件,我最近开始使用NPOI 。 我对此非常满意。