Actualmente estoy escribiendo sobre tipado dinámico, y estoy dando un ejemplo de interoperabilidad de Excel. Apenas he hecho una interoperabilidad de Office antes, y se nota. El MSDN Office Interop tutorial para C# 4 usa la interfaz _Worksheet
, pero también hay una interfaz Worksheet
. No tengo idea de cuál es la diferencia.Interoperabilidad de Excel: _Worksheet o Worksheet?
En mi aplicación de demostración absurdamente simple (que se muestra a continuación) funciona bien, pero si las mejores prácticas dictan una u otra, prefiero usarla adecuadamente.
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();
}
}
que estoy tratando de evitar hacer una profunda inmersión completa en COM o la interoperabilidad de Office, basta con resaltar las nuevas características de C# 4 - pero no quiere hacer nada muy, muy tonto.
(Puede que también haya algo realmente estúpido en el código anterior, en cuyo caso comuníquemelo. Utilizar celdas de inicio/final separadas en lugar de solo "A1: T1" es deliberado, es más fácil ver que es genuinamente un rango de 20 celdas. Cualquier otra cosa es probablemente accidental.)
Entonces, ¿debo usar _Worksheet
o Worksheet
, y por qué?
Jon, además de las excelentes respuestas que se da aquí, Yo agregaría que, en general, cuando se trabaja con Excel a través de la interoperabilidad, use el nombre de la clase como aparece normalmente en Excel. Esto significa usar 'Hoja de cálculo' en lugar de '_ Hoja de trabajo', y usar 'Aplicación' en lugar de 'Clase de aplicación'. (Una explicación aquí explica por qué no se debe usar 'ApplicationClass': http://blogs.msdn.com/ptorr/archive/2004/02/05/67872.aspx). Si no está familiarizado con el modelo de objetos de Excel como expuesto a COM, entonces esto podría ser más complicado, pero creo que debería quedar bastante claro la mayor parte del tiempo. –
Afortunadamente estoy haciendo * muy * poco con Office, realmente solo estoy tratando de mostrar las nuevas funciones. Muchas gracias por el enlace, ¡muy útil! –
Lo siento pero tengo que preguntar: ¿Cuál es la nueva característica de C# 4 que está resaltando? – Oskar