【问题标题】:Opening MS Excel worksheet in C#在 C# 中打开 MS Excel 工作表
【发布时间】:2010-06-18 00:58:16
【问题描述】:

我知道我们可以通过提供工作表编号 (1,2,3..) 或名称 (sheet1, sheet2, sheet3...) 来使用 C# 打开特定的 MS Excel 工作表

我有一个 excel 文件,其中有 2 张工作表,1. 值,2. 结果

有没有办法打开一个给出工作表名称的工作表,即“值”而不是 C# 中的 1 或 [s|S]heet1??

我浏览了旧帖子,但没有发现任何有用的...

同样,我想要做的是,通过使用其用户定义的名称(值)而不是系统定义的名称(1 或 [s|S]heet1)打开 Excel 工作表

任何意见将不胜感激!

【问题讨论】:

    标签: c# excel


    【解决方案1】:

    在您的项目中添加对 Microsoft.Office.Interop.Excel 的引用,您可以使用下一个代码作为基础

    Excel.Application oXL;
    Excel._Workbook oWB;
    Excel._Worksheet oSheet;
    
    //Start Excel and get Application object.
    oXL = new Excel.Application();
    oXL.Visible = false;
    oXL.DisplayAlerts = false; // prevents message from popping up
    
    try
    {
    
        //Get a new workbook.
        oWB = (Excel._Workbook)(oXL.Workbooks.Open(filename, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing, Type.Missing));
    
        oSheet = (Excel._Worksheet)oWB.ActiveSheet;
    
        int nCounter = 1;
        oSheet.Copy(oSheet, Type.Missing);
        Excel._Worksheet oSheetGame = (Excel._Worksheet)oWB.Worksheets["MyTemplate"];
        oSheetGame.Name = "MyNewWorksheetName";
        // do something with worksheet
    
        ((Excel._Worksheet)oWB.Sheets["MyTemplate"]).Delete(); // delete template
        ((Excel._Worksheet)oWB.Worksheets["MyNewWorksheetName"]).Activate();
    
    }
    catch (Exception e)
    {
        //throw e;
        throw;
    }
    finally
    {
        //Make sure Excel is visible and give the user control
        //of Microsoft Excel's lifetime.
        oXL.Visible = true;
        oXL.UserControl = true;
    }
    
    oXL.Save(Type.Missing);
    

    【讨论】:

    • 请记住,要在 Web 服务器上使用它,您必须在那里安装 Excel (Office)。您的 Web 应用程序的每个实例都将运行一个新的 Excel 实例。使用 NPOI 库读写 XLS 和 XLSX 文件还有另一种解决方案:npoi.codeplex.com
    【解决方案2】:

    @volody,谢谢!你的帖子很有帮助。 我从你那里拿了工作表声明部分,把我的改成了:

            Excel.Application excelApplication;
            Excel.Worksheet excelWorksheet;
            Excel.Workbook excelWorkbook;
            Excel.Range range;
    
            excelApplication = new Excel.Application();
    
            excelWorkbook = (Excel.Workbook)(excelApplication.Workbooks.Open(
                <FILENAME>,
                Type.Missing, true, Type.Missing, Type.Missing, Type.Missing,
                true, Type.Missing, Type.Missing, false, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing));
    
            excelWorksheet = (Excel.Worksheet)excelWorkbook.Worksheets[<WORKSHEETNAME>];
    

    上面的代码有助于打开具有用户定义名称的 Excel 工作表。例如,打开一个名为 Test 而不是 Sheet1 的工作表。

    • 伊瓦尔

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 2014-09-12
      • 2012-05-07
      • 2014-07-02
      • 2018-01-18
      相关资源
      最近更新 更多