【问题标题】:using c# to select a worksheet in excel使用c#在excel中选择一个工作表
【发布时间】:2012-08-24 20:21:46
【问题描述】:

在带有 Visual Studio 2008 的 .NET 3.5 中使用 C#,我试图在打开的工作簿中设置焦点(或激活)特定工作表:

以下是一些属性:

public Excel.Application xlApp {get;set;}
public Excel.Workbook xlWorkBook { get; set; }
public Excel.Worksheet xlWorkSheet { get; set; }
public Excel.Range range { get; set; }        

这是我尝试选择特定工作表的方式:

(xlWorkSheet)Application.ActiveWorkbook.Sheets[FormControls.WorksheetFocus]).Select(Type.Missing);

我也试过这种方式:

((Excel.Worksheet)this.Application.ActiveWorkbook.Sheets[1]).Select();

我做错了什么?如何使用 C# 在工作簿中选择特定工作表?


解释定义在哪里:

namespace EmailSalesVolumeSolution
{
    class WorkBook
    {
        public string MasterFileName { get; set; }
        public string[] DistinctEmails { get; set; }
        public Excel.Application xlApp {get;set;}
        public Excel.Workbook xlWorkBook { get; set; }
        public Excel.Worksheet xlWorkSheet { get; set; }
        public Excel.Range range { get; set; }    

一切都在同一个类和命名空间中

这是它的初始化方式:

private void OpenWorkBook()
{
    string str;
    int rCnt = 0;
    int cCnt = 0;


    xlApp = new Excel.ApplicationClass();
    xlWorkBook = xlApp.Workbooks.Open(MasterFileName, 0, true, 5, "", "", true,
        Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,
        "\t", false, false, 0, true, 1, 0);
    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(FormControls.WorksheetEmails);

【问题讨论】:

    标签: c# .net excel excel-2007 office-interop


    【解决方案1】:

    您可以使用以下代码:

    Worksheet sheet = (Worksheet)xlApp.Worksheets[1];
    sheet.Select(Type.Missing);
    

    sheet.Activate();
    

    我已经使用了这段代码,它对我来说很好。

    【讨论】:

      【解决方案2】:

      你的属性初始化了吗?

      如果是,您应该能够通过以下任何一种方式实现您想要实现的目标:

      xlApp.ActiveWorkbook.Sheets[1].Activate();
      xlWorkbook.Sheets[1].Activate();
      xlSheet.Activate();
      

      如果不是,您应该至少将xlApp 属性初始化为您正在使用的Application 对象,然后使用上面的代码。您可以使用下面的代码初始化前两个对象。

      xlApp = new Microsoft.Office.Interop.Excel.Application();
      Workbooks xlWorkbooks = xlApp.Workbooks;
      xlWorkbook = xlWorkbooks.Open(@"C:\filename.xlsx");
      

      【讨论】:

      • 非常感谢。你能澄清一下我将如何初始化它吗?
      • 所以属性已经初始化了。您是否尝试过使用 If they are 下的代码?
      • 我使用了xlWorkbook.Sheets[1].Activate();,效果很好。
      【解决方案3】:

      这就是我所做的,它有效!

      Excel.Worksheet xlWorkSheetFocus = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2);
      xlWorkSheetFocus.Activate();
      

      【讨论】:

      • 这对我有用,此外,工作表项从“1”开始
      【解决方案4】:
      xlWorkSheet = (Worksheet)xlWorkBook.Worksheets.get_Item(2);
      

      xlWorkSheet =(Worksheet)xlWorkBook.Sheets["SheetName"];
      

      【讨论】:

      • 尝试更好地格式化您的答案并添加一些解释。
      【解决方案5】:

      两种方式都可以:

      Excel.Application xlApp;
      Excel.Worksheet xlWorksheet;
      
      1. xlWorksheet = xlApp.Worksheets.get_Item(1);

      2. xlWorksheet = xlApp.Worksheets[1];

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-12
        • 1970-01-01
        • 2015-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-01
        • 2022-12-21
        相关资源
        最近更新 更多