[英]How to positioning specific sheet on Excel with C#
伙計們...我需要 C# 和 Microsoft Excel 方面的幫助。
我所有的課程都可以很好地滿足我的需要,但現在我必須定位在我的工作簿的特定工作表上。
我所有的基類都在 C# 中,但我在 vb 上使用它:
Private Shared app As NSCExcelApp
Private Shared wb As WorkBook
Private Shared ws As WorkSheet
Public Shared Sub Simulate(_total As Double, _nameSheet As String)
If (IsNothing(app)) Then
app = New NSCExcelApp()
app.Visible = true
wb = app.OpenWorkbook(Path.Combine(Application.StartupPath, nameFileEXCEL))
End If
wb.ActiveSheet
ws.Range("C2:C2".Select()
app.ActiveCell.FormulaR1C1 = _totalToString("N2")
當我使用 wb.ActiveSheet 時,我可以獲得 activesheet(我的 .xlsx 中的第一個)。
但是,我怎樣才能得到另一張紙?
這些是我的課程:
public class NSCExcelApp : Object
{
public Type ExcelType { get; set; }
private object obj;
public NSCExcelApp()
{
Type ExcelType = Type.GetTypeFromProgID("Excel.Application");
obj = Activator.CreateInstance(ExcelType);
}
public NSCExcelApp(object obj)
{
this.obj = obj;
}
public WorkBook AddWorkBook()
{
object w = this.Workbooks;
return new WorkBook(w.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, w, new object[] { -4167 }));
}
public WorkBook OpenWorkbook(string fileName)
{
return new WorkBook(Workbooks.GetType().InvokeMember("Open",
BindingFlags.InvokeMethod, null,
Workbooks , new object[1] { fileName }));
}
private object Workbooks
{
get
{
return obj.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, obj, null);
}
}
我有 WorkBook 類和 WorkSheet 類:
public class WorkBook
{
Type WorkBookType { get; set; }
object obj;
public WorkBook(object obj)
{
WorkBookType = Type.GetTypeFromProgID("Excel.Workbook");
this.obj = obj;
}
public WorkSheet ActiveSheet
{
get
{
return new WorkSheet(obj.GetType().InvokeMember("ActiveSheet", BindingFlags.GetProperty, null, obj, new object[] { }));
}
set
{
obj.GetType().InvokeMember("ActiveSheet", BindingFlags.SetProperty, null, obj, new object[] { value.obj });
}
}
public WorkSheet Sheets(int index)
{
object o = obj.GetType().InvokeMember("Sheets", BindingFlags.GetProperty, null, obj, new object[] { });
PropertyInfo[] x = o.GetType().GetProperties();
o = o.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, obj, new object[1] { index });
return new WorkSheet(o);
}
}
public class WorkSheet
{
public object obj { get; set; }
public WorkSheet(object obj)
{
this.obj = obj;
}
}
這將為您提供所需的工作表:(為 VB 而不是 C# 編輯,抱歉)
VB:
ws = wb.Worksheets("mysheetname")
C#:
ws = wb.Worksheets["mysheetname"];
將“mysheetname”替換為您需要的任何工作表名稱,例如“Sheet1”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.