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

时间:2009-01-21 11:25:48

标签: c# .net excel vsto

我正在尝试将一些VBA代码转换为C#。我是C#的新手。目前我正在尝试从文件夹中打开Excel文件,如果它不存在则创建它。我正在尝试以下内容。我怎样才能使它发挥作用?

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();

12 个答案:

答案 0 :(得分:72)

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

可以在Workloads>下的Visual Studio安装程序中选择VSTO。 Web&云> Office / SharePoint开发。

之后创建常见的.NET项目,并通过'Add Reference ...>添加对Microsoft.Office.Interop.Excel的引用。装配体的对话框。

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

Missing.Value是一个特殊的反射结构,用于不必要的参数替换

答案 1 :(得分:36)

FileInfo fi = new FileInfo("C:\\test\\report.xlsx");
if(fi.Exists)
{
    System.Diagnostics.Process.Start(@"C:\test\report.xlsx");
}
else
{
    //file doesn't exist
}

答案 2 :(得分:8)

打开Excel文件

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

答案 3 :(得分:7)

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);
  }
}

答案 4 :(得分:3)

你应该像这样打开

        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

答案 5 :(得分:3)

进口

 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工作表的视频配合

答案 6 :(得分:2)

要打开文件,请尝试以下操作:

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

你必须提供那些愚蠢的“缺失”参数。如果您在VB.Net中编写相同的代码,则不需要它们,但是您无法在C#中避免使用它们。

答案 7 :(得分:2)

如果您说出错误,或者在运行时失败了,那么帮助您会更容易。

但是从快速浏览一下,你就混淆了一些事情。

由于存在一些问题,以下情况不起作用。

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

您要做的是创建一个新的Directory对象,该对象应该指向一个文件,然后检查是否有任何错误。

您实际在做的是尝试调用名为Directory()的函数,然后为结果分配一个字符串。这不起作用,因为1 /您没有名为Directory(string str)的函数,并且您无法从函数中分配结果(您只能为变量赋值)。

你应该做什么(至少这一行)是以下

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

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

答案 8 :(得分:2)

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);

答案 9 :(得分:1)

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

我问这个是因为根据我的经验,所有免费的.NET Excel处理方案都存在严重问题,原因各不相同。对于业余爱好者而言,我通常最终将jExcelApi从Java移植到C#并使用它。

但如果这是商业应用程序,那么购买第三方库(例如Aspose.Cells)会更好。相信我,它完全值得,因为它节省了大量的时间和时间是不自由的。

答案 10 :(得分:1)

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

答案 11 :(得分:1)

代码:

 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());
                        }
                    }
                }
            }