Attualmente sto scrivendo sulla tipizzazione dinamica e sto dando un esempio di interoperabilità con Excel. Non ho quasi mai fatto l'interoperabilità con Office prima, e mostra. Il MSDN Office Interop tutorial per C# 4 utilizza l'interfaccia _Worksheet
, ma è presente anche un'interfaccia Worksheet
. Non ho idea di quale sia la differenza.Interop di Excel: _Worksheet o foglio di lavoro?
Nella mia app demo assurdamente semplice (mostrata sotto) funziona bene, ma se le migliori pratiche dettano l'una o l'altra, preferisco usarlo in modo appropriato.
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();
}
}
sto cercando di evitare di fare una full profonda immersione in COM o l'interoperabilità di Office, solo mettendo in evidenza le nuove caratteristiche di C# 4 - ma io non voglio fare qualcosa di veramente, veramente stupido.
(Potrebbe esserci qualcosa di veramente stupido nel codice sopra, in tal caso per favore fatemelo sapere.Utilizzare celle di avvio/fine separate invece di "A1: T1" è intenzionale - è più facile vederlo è veramente una gamma di 20 celle. Tutto il resto è probabilmente casuale.)
Quindi, dovrei usare _Worksheet
o Worksheet
e perché?
Jon, oltre alle risposte eccellenti in fase di data qui, Vorrei aggiungere che, in generale, quando si lavora con Excel tramite l'interoperabilità, utilizzare il nome della classe così come normalmente appare in Excel. Ciò significa utilizzare "foglio di lavoro" anziché "_Worksheet" e utilizzare "Applicazione" anziché "ApplicationClass". (Una discussione qui spiega perché non usare la 'ApplicationClass': http://blogs.msdn.com/ptorr/archive/2004/02/05/67872.aspx.) Se non si ha familiarità con il modello di oggetti Excel come esposto a COM, questo potrebbe essere più complicato, ma penso che dovrebbe essere abbastanza chiaro la maggior parte del tempo. –
Fortunatamente sto facendo * molto * poco con Office - in realtà sto solo cercando di mostrare le nuove funzionalità. Grazie mille per il collegamento - molto utile! –
Mi dispiace ma devo chiederti: qual è la nuova funzionalità di C# 4 che stai evidenziando? – Oskar