5

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

如果你们中的任何人对我如何更好地完成任务有一些意见,我非常希望。我一直在看 Visual Studio Tools for Office,但我不确定它的功能。我知道制作 Excel 插件是必需的,但它对 Excel 自动化有帮助吗?

我一直在拼命地尝试查找有关使用 C# 在 Visual Studio 2012 中使用 Excel 的信息。我确实找到了一些不错但简短的教程。但是,我真的很想要一本书,该主题可以更深入地了解该领域的功能和最佳实践。用我有限的知识搜索亚马逊只会给我使用旧版本的 Visual Studio 的 VSTO 书籍。

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

4

2 回答 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();

只需填写行、列和格式就比上面的要简单:)

于 2012-12-06T10:57:53.480 回答
3

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

还有一些tips:

  • 创建帮助器以根据注入条件格式化特定范围
  • 使用 R1C1 引用来偏移,否则你的代码会变得一团糟
  • 尝试尽可能频繁地使用命名范围,因为这样可以更轻松地创建帖子格式
  • 将您的代码抽象到样式类中,并且不要将其添加到与您的逻辑“一致”
于 2012-12-06T12:30:30.457 回答