C#和Excel最佳实践

5

我正在使用Microsoft.Office.Interop.Excel在C#(Visual Studio 2012)中进行大量的MS Excel互操作。这需要很多繁琐的手动代码来包含Excel公式、格式化文本和数字以及制作图表。

如果你们中的任何人对我如何更好地完成任务有所建议,我会非常感激。我一直在研究Visual Studio Tools for Office,但我不确定它的功能。我知道需要制作Excel插件,但它是否有助于进行Excel自动化?

我一直在拼命寻找使用C#在Visual Studio 2012中处理Excel的信息。我确实找到了一些好的但是短小的教程。然而,我真的希望有一本书来深入学习该领域的功能和最佳实践。在Amazon上搜索我的有限知识只给我提供了关于使用旧版本Visual Studio的VSTO的书籍。

我不想使用VBA。我的应用程序主要使用Excel来可视化从不同来源编译的内容。此外,我进行数据处理时不需要Excel。此外,我可以编写C#但无法编写VB。

2个回答

4
我以前用过这个,发现它非常好用,而且读写Excel表格非常容易。不确定更高级的功能(它有,但我从来没有尝试过),但可以看一下。它适用于OOXML格式(.xlsx),没有COM互操作或VBA或任何东西,纯粹的.Net。

http://epplus.codeplex.com/

制作饼图的示例代码:
//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();

只需填写行、列和格式,比上面更简单 :)

现在EPPLUS已经迁移到此存储库https://github.com/EPPlusSoftware/EPPlus。 - Sovandara LENG

3
请参见http://exceldna.codeplex.com/,这是一个被广泛使用于此特定目的的工具,拥有大量用户并在进行维护和增强。
另外,一些提示:
  • 创建助手以根据注入的条件格式化特定范围
  • 使用R1C1引用进行偏移,否则您的代码将变得混乱
  • 尽可能经常使用命名区域,因为这会使后期格式化更容易
  • 将您的代码抽象到样式类中,并不要将其“内联”到您的逻辑中

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接