C#和Excel最佳实践

时间:2012-12-06 10:53:55

标签: c# excel office-interop

我正在使用Microsoft.Office.Interop.Excel进行大量MS Excel interop i C#(Visual Studio 2012)。它需要大量令人厌倦的手动代码来包含Excel公式,对文本和数字进行格式化以及制作图表。

如果你们对我如何更好地完成任务有任何意见,我非常希望。我一直在寻找Office的Visual Studio工具,但我不确定它的功能。我知道它需要制作Excel加载项,但是它有助于实现Excel自动化吗?

我一直在尝试使用C#查找有关在Visual Studio 2012中使用Excel的信息。我确实找到了一些很好但很简短的教程。但是,我真的希望有一本书能够更深入地学习该领域的功能和最佳实践。使用我的有限知识来搜索亚马逊只能让我使用旧版本的Visual Studio预订VSTO。

我不想使用VBA。我的应用程序主要使用Excel来可视化从不同来源编译。我也在不需要Excel的数据处理中。此外,我可以编写C#而不是VB。

2 个答案:

答案 0 :(得分:3)

我之前使用过它,发现它非常好,非常容易阅读和阅读写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();

填写行,列和格式比上面简单:)

答案 1 :(得分:3)

请参阅http://exceldna.codeplex.com/,广泛用于此特定目的,拥有庞大的用户群并进行维护和增强。

还有一些提示:

  • 根据注入条件创建帮助程序以格式化特定范围
  • 使用R1C1引用偏移量或您的代码将变得一团糟
  • 尝试尽可能多地使用命名范围,因为这样可以更轻松地创建帖子格式
  • 将您的代码摘要到样式类中,不要将其与“逻辑”
  • “一致”地添加