Obecnie piszę o dynamicznym pisaniu i podaję przykład interop Excel. Zwykle nie robiłem żadnego interopingu w Office i to pokazuje. Interfejs MSDN Office Interop tutorial dla C# 4 wykorzystuje interfejs _Worksheet
, ale istnieje również interfejs Worksheet
. Nie mam pojęcia, jaka jest różnica.Excel interop: _Worksheet lub Worksheet?
W mojej absurdalnie prostej aplikacji demonstracyjnej (pokazanej poniżej) albo działa dobrze - ale jeśli najlepsza praktyka dyktuje jedno lub drugie, wolałbym użyć tego odpowiednio.
using System;
using System.Linq;
using Excel = Microsoft.Office.Interop.Excel;
class DynamicExcel
{
static void Main()
{
var app = new Excel.Application { Visible = true };
app.Workbooks.Add();
// Can use Excel._Worksheet instead here. Which is better?
Excel.Worksheet workSheet = app.ActiveSheet;
Excel.Range start = workSheet.Cells[1, 1];
Excel.Range end = workSheet.Cells[1, 20];
workSheet.get_Range(start, end).Value2 = Enumerable.Range(1, 20)
.ToArray();
}
}
staram się unikać robienia pełną głębokiego nurkowania w COM lub Office interoperacyjności, tylko podkreślając nowe funkcje C# 4 - ale nie chcę nic robić naprawdę głupie.
(W powyższym kodzie może być coś naprawdę, naprawdę głupiego, w takim przypadku proszę dać mi znać. Używanie oddzielnych komórek początkowych/końcowych zamiast tylko "A1: T1" jest celowe - łatwiej to zauważyć to naprawdę zakres 20 komórek. Cokolwiek innego jest prawdopodobnie przypadkowe.)
Więc, czy powinienem użyć _Worksheet
lub Worksheet
i dlaczego?
Jon, oprócz doskonałych odpowiedzi podane są tutaj, Dodałbym, że generalnie, podczas pracy z Excelem poprzez interop, użyj nazwy klasy tak, jak zwykle pojawia się w Excelu. Oznacza to użycie "Arkusza roboczego" zamiast "_Worksheet" i użycie "Aplikacja" zamiast "ApplicationClass". (Omówiona tutaj dyskusja wyjaśnia, dlaczego nie należy używać "ApplicationClass": http://blogs.msdn.com/ptorr/archive/2004/02/05/67872.aspx.) Jeśli nie znasz modelu obiektów programu Excel jako narażone na COM, to może być trudniejsze, ale myślę, że powinno to być dość jasne przez większość czasu. –
Na szczęście robię * bardzo * mało z Office - naprawdę tylko próbuję pokazać nowe funkcje. Bardzo dziękuję za link - bardzo pomocny! –
Przykro mi, ale muszę zapytać - Jaka jest nowa funkcja C# 4, którą podkreślasz? – Oskar