использование c# для выбора листа в excel

используя C# в .NET 3.5 с Visual Studio 2008, я пытаюсь установить фокус (или активировать) определенного листа в открытой книге:

вот некоторые свойства:

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

и все находится в одном классе и пространстве имен

вот как это initiliazed:

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

5 ответов


Вы можете использовать следующий код :

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

или

sheet.Activate();

я использовал этот код и он прекрасно работает для меня.


инициализированы ли ваши свойства?

если они, вы, вероятно, должны быть в состоянии достичь того, что вы пытаетесь любой из них:

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

вот что я сделал и это работает!

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

вы можете сделать это в обоих направлениях:

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

  2. xlWorksheet = xlApp.Worksheets[1];


xlWorkSheet = (рабочий лист)xlWorkBook.Рабочий лист.get_Item(2);

или

xlWorkSheet =(рабочий лист)xlWorkBook.Листы ["SheetName"];