2012-12-06 11 views
5

Robię wiele interopów MS Excel i C# (Visual Studio 2012) za pomocą Microsoft.Office.Interop.Excel. Wymaga dużej ilości męczącego kodu ręcznego, aby uwzględnić formuły Excela, formatowania tekstu i liczb oraz tworzenia wykresów.Najlepsze praktyki w # C# i Excelu

Chciałbym bardzo, jeśli ktokolwiek z was ma jakiś wkład w lepsze wykonanie tego zadania. Przeglądam Visual Studio Tools for Office, ale nie mam pewności co do jego funkcji. Rozumiem, że jest to wymagane do tworzenia dodatków do programu Excel, ale czy pomaga to w automatyzacji programu Excel?

Rozpaczliwie próbowałem znaleźć informacje na temat pracy z programem Excel w Visual Studio 2012 przy użyciu C#. Znalazłem kilka dobrych, ale krótkich samouczków. Jednak naprawdę chciałbym, aby książka była tematem dogłębniej poznanym w zakresie funkcjonalności i najlepszych praktyk. Przeszukiwanie Amazon przy pomocy mojej ograniczonej wiedzy daje mi tylko książkę o VSTO przy użyciu starszych wersji Visual Studio.

Nie chciałbym używać VBA. Moje aplikacje korzystają z Excela głównie do wizualizacji skompilowanych z różnych źródeł. Ja również do przetwarzania danych, gdzie Excel nie jest wymagane. Ponadto mogę napisać C#, ale nie VB.

Odpowiedz

3

Użyłem tego wcześniej, stwierdziłem, że jest bardzo dobry i bardzo łatwy do odczytania & podczas pisania arkuszy Excela. Nie jestem pewien co do bardziej zaawansowanych rzeczy (tam jest, po prostu nigdy tego nie próbowałem), ale popatrz. Prace nad formatem OOXML (.xlsx) i nie ma modelu COM lub VBA lub cokolwiek, czysta .Net

http://epplus.codeplex.com/

Przykład kodu zrobić wykres kołowy:

//ExcelPackage is a class within the EPPlus DLL 
var p = new ExcelPackage(); 
p.Workbook.Worksheets.Add("sheetName") 
var ws = p.Workbook.Worksheets.First(); 

//Add the piechart 
var pieChart = ws.Drawings.AddChart("crtExtensionsSize", eChartType.PieExploded3D) as ExcelPieChart; 

//Set top left corner to row 1 column 2 
pieChart.SetPosition(1, 0, 2, 0); 
pieChart.SetSize(400, 400); 
pieChart.Series.Add(ExcelRange.GetAddress(4, 2, row-1, 2), ExcelRange.GetAddress(4, 1, row-1, 1));  
pieChart.Title.Text = "Extension Size"; 

//Set datalabels and remove the legend 
pieChart.DataLabel.ShowCategory = true; 
pieChart.DataLabel.ShowPercent = true; 
pieChart.DataLabel.ShowLeaderLines = true; 
pieChart.Legend.Remove(); 

Wystarczy wypełnienie wiersze, kolumny i formatowanie są prostsze niż powyższe :)

3

patrz http://exceldna.codeplex.com/, używane szeroko w tym konkretnym celu z dużą bazą użytkowników i są utrzymywane i ulepszane.

także kilka wskazówek:

  • Załóż pomocników formatować konkretne zakresy na podstawie wstrzyknięto warunkach
  • referencje Zastosowanie R1C1 do offsetowych lub kod staną się bałagan
  • spróbuje użyć nazwanych zakresów jak często jak to tylko możliwe, ponieważ ułatwia to formatowanie postów.
  • Odrzuć swój kod na klasy stylów i nie dodawaj go "w linii" z logiką.