2012-12-06 55 views
5

Tôi đang thực hiện rất nhiều MS Excel interop i C# (Visual Studio 2012) sử dụng Microsoft.Office.Interop.Excel. Nó đòi hỏi rất nhiều mã thủ công mệt mỏi để bao gồm các công thức Excel, làm định dạng văn bản và số và tạo biểu đồ.Thực hành tốt nhất C# và Excel

Tôi muốn rất nhiều nếu có ai trong số các bạn có một số đầu vào về cách tôi thực hiện tác vụ tốt hơn. Tôi đã xem xét các công cụ Visual Studio cho Office, nhưng tôi không chắc chắn về các chức năng của nó. Tôi nhận được nó là cần thiết để làm cho Excel add-in, nhưng nó giúp làm việc tự động hóa Excel?

Tôi đã rất cố gắng tìm thông tin về cách làm việc với Excel trong Visual Studio 2012 bằng C#. Tôi đã tìm thấy một số hướng dẫn tốt nhưng ngắn. Tuy nhiên tôi thực sự muốn một cuốn sách là một chủ đề để tìm hiểu sâu hơn về lĩnh vực chức năng và thực hành tốt nhất. Tìm kiếm Amazon với knowlegde hạn chế của tôi chỉ cho tôi cuốn sách về VSTO bằng cách sử dụng các phiên bản cũ hơn của Visual Studio.

Tôi không muốn sử dụng VBA. Ứng dụng của tôi sử dụng Excel chủ yếu để hình dung được biên dịch từ các nguồn khác nhau. Tôi cũng để xử lý dữ liệu mà Excel là không cần thiết. Hơn nữa, tôi có thể viết C# nhưng không phải VB.

Trả lời

3

Tôi đã sử dụng điều này trước đây, thấy nó rất tốt và rất dễ đọc & viết các trang tính Excel. Không chắc chắn về những thứ cao cấp hơn (Nó có, tôi chỉ không bao giờ thử nó) nhưng cung cấp cho nó một cái nhìn. Hoạt động trên các định dạng OOXML (.xlsx) và không có COM interop hoặc VBA hoặc bất cứ điều gì, tinh khiết Net

http://epplus.codeplex.com/

Ví dụ mã để làm cho một chiếc bánh-biểu đồ:

//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(); 

Chỉ cần điền vào hàng, cột và định dạng đơn giản hơn ở trên :)

3

xem http://exceldna.codeplex.com/, được sử dụng rộng rãi cho mục đích cụ thể này với cơ sở người dùng lớn và được duy trì và nâng cao.

Cũng là một vài lời khuyên:

  • Tạo người giúp đỡ để định dạng dãy cụ thể dựa trên điều kiện tiêm
  • Sử dụng R1C1 tài liệu tham khảo để bù đắp hoặc mã của bạn sẽ trở thành một mớ hỗn độn
  • Cố gắng sử dụng phạm vi đặt tên như thường càng tốt vì điều này tạo ra định dạng bài đăng dễ dàng hơn
  • Tóm tắt mã của bạn thành các lớp kiểu và không thêm mã đó "theo dòng" với logic của bạn
Các vấn đề liên quan