В настоящее время я пишу о динамической типизации, и я приведу пример взаимодействия Excel. Раньше я почти ничего не делал в офисе, и это видно. MSDN Office Interop tutorial для C# 4 использует интерфейс _Worksheet
, но есть также интерфейс Worksheet
. Я понятия не имею, в чем разница.Excel interop: рабочий стол или рабочий лист?
В моем абсурдно простом демонстрационном приложении (показано ниже) работает нормально - но если лучшая практика диктует то или иное, я бы предпочел использовать его надлежащим образом.
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();
}
}
Я пытаюсь не делать полное глубокое погружение в COM или офис взаимодействие, просто выделяя новые возможности C# 4 - но я не хочу, чтобы сделать что-нибудь на самом деле, действительно немое.
(Возможно, в приведенном выше коде может быть что-то действительно, действительно глупое, и в этом случае, пожалуйста, дайте мне знать. Использование отдельных стартовых/конечных ячеек вместо «A1: T1» является преднамеренным - легче видеть, что это действительно диапазон из 20 ячеек. Все остальное, вероятно, случайное.)
Итак, следует ли использовать _Worksheet
или Worksheet
и почему?
Джон, в дополнение к отличным ответам уделяется здесь, Я бы добавил, что, вообще говоря, при работе с Excel через interop, используйте имя класса, как обычно появляется в Excel. Это означает использование «Worksheet» вместо «_Worksheet» и использование «Application» вместо «ApplicationClass». (Здесь обсуждается, почему нельзя использовать «ApplicationClass»: http://blogs.msdn.com/ptorr/archive/2004/02/05/67872.aspx.) Если вы не знакомы с объектной моделью Excel как подвергается воздействию COM, тогда это может быть сложнее, но я думаю, что это должно быть довольно ясно большую часть времени. –
К счастью, я делаю * очень мало с Office - на самом деле просто пытается показать новые функции. Большое спасибо за ссылку, хотя - очень полезно! –
Прошу прощения, но мне нужно спросить - Какая новая особенность C# 4, которую вы выделяете? – Oskar