2012-08-24 44 views
6

Sử dụng C# trong .NET 3.5 với Visual Studio 2008, tôi đang cố gắng để thiết lập tập trung (hoặc kích hoạt) một bảng tính cụ thể trong một workbook mở:sử dụng C# để chọn một bảng tính trong excel

Dưới đây là một số tính chất:

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

Và đây là cách mà tôi đang cố gắng để lựa chọn một bảng tính cụ thể:

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

Và tôi cũng đã cố gắng theo cách này:

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

Tôi đang làm gì sai? Làm cách nào để chọn một trang tính cụ thể trong sổ làm việc bằng C#?


giải thích về nơi định nghĩa là:

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

và mọi thứ đều trong cùng một lớp và namespace

đây là làm thế nào nó được 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); 

Trả lời

2

Đây là những gì tôi đã làm và hoạt động!

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

Điều này chỉ hoạt động nếu bạn đặt .Visible = True – Denis

6

Are của bạn thuộc tính được khởi tạo?

Nếu họ, có lẽ bạn sẽ có thể đạt được những gì bạn đang cố gắng theo một trong những:

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

Nếu họ không, bạn nên khởi tạo ít nhất xlApp tài sản để Application đối tượng bạn đang làm việc và sau đó sử dụng mã ở trên. Bạn có thể khởi tạo hai đối tượng đầu tiên bằng cách sử dụng mã bên dưới.

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

cảm ơn bạn rất nhiều. bạn có thể làm rõ làm thế nào tôi sẽ khởi tạo điều đó? –

+0

cảm ơn bạn, tôi đã bao gồm thông tin về cách mọi thứ được initilaized –

+0

Vì vậy, các thuộc tính đã được khởi tạo. Bạn đã thử sử dụng mã dưới ** Nếu chúng là **? –

16

Bạn có thể sử dụng đoạn mã sau:

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

hoặc

sheet.Activate(); 

Tôi đã sử dụng đoạn mã này và nó hoạt động tốt đối với tôi.

+1

Điều này chỉ hoạt động nếu bạn đặt .Visible = True – Denis

0

Bạn có thể làm điều đó cả hai cách:

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

  2. xlWorksheet = xlApp.Worksheets[1];

0

xlWorkSheet = (Worksheet) xlWorkBook.Worksheets.get_Item (2);

HOẶC

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

+1

Hãy thử định dạng câu trả lời của bạn tốt hơn và thêm một số giải thích. – Sam

Các vấn đề liên quan