Excel工作簿和graphics

希望这不是太棘手,但是,我一直在用C#和Visual Studio 2012开发一个应用程序来分析文本并创build一系列List<T> 。 有了这个,我已经成功地将这些数据导出到Excel电子表格。 但是,我已经尽可能在新的工作表上创build一个图表,但是,我无法弄清楚如何从列表中的一个或其他工作表中获取数据并将其graphics化。

这是我一直用来创build图表的代码片段:

 const string topLeft = "A1"; const string bottomRight = "A4"; const string graphTitle = "License use"; const string xAxis = "Time"; const string yAxis = "Number of licenses"; var charts = worksheet.ChartObjects() as Microsoft.Office.Interop.Excel.ChartObjects; var chartObject = charts.Add(60, 10, 300, 300) as Microsoft.Office.Interop.Excel.ChartObject; var chart = chartObject.Chart; // Set chart range. range = worksheet.get_Range(topLeft, bottomRight); chart.SetSourceData(range); // Set chart properties. chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine; chart.ChartWizard(Source: range, Title: graphTitle, CategoryTitle: xAxis, ValueTitle: yAxis); 

如果需要,我可以发布其余的Excel文档创build。

如果不需要Interop尝试使用OpenXML SDK,则可以创build一个您想要对其进行build模的文档模板,然后使用OpenXML SDk工具检查文档并查看用于生成该文档的代码,然后将其分解为你正试图创build的对象。 在这里有更多关于它的信息

http://openXMLDeveloper.org

和DLL和工具可以find

http://www.microsoft.com/en-us/download/details.aspx?id=30425

有几个YouTubevideo也展示了这一点。 此解决scheme仅适用于基于OpenXML的文档(即Office 2007及更高版本)。

刚刚创build了一个简单的例子,你有公司ABC和5年的许可证数量。

您可以看到您可以按名称select工作表,然后向其添加数据并向其中添加图表。

  Sheets excelSheets = workbook.Worksheets; string currentSheet = "Sheet1"; Worksheet worksheet1 = (Worksheet)excelSheets.get_Item(currentSheet); 

在选定的工作表上,你可以添加你的图表,并告诉你想从工作表1范围,你可以使用任何工作表的范围,并推送到该图表使用SetSourceData希望这有助于回答你的问题,不搞清楚如何“从其他工作表中获取数据并绘制图表。“

  var app = new Application(); app.Visible = true; var workbook = app.Workbooks.Add(1); Sheets excelSheets = workbook.Worksheets; string currentSheet = "Sheet1"; Worksheet worksheet1 = (Worksheet)excelSheets.get_Item(currentSheet); worksheet1.Cells[1, 1] = ""; worksheet1.Cells[1, 2] = "Year 1"; worksheet1.Cells[1, 3] = "Year 2"; worksheet1.Cells[1, 4] = "Year 3"; worksheet1.Cells[1, 5] = "Year 4"; worksheet1.Cells[1, 6] = "Year 5"; worksheet1.Cells[2, 1] = "Company A"; worksheet1.Cells[2, 2] = "10"; worksheet1.Cells[2, 3] = "50"; worksheet1.Cells[2, 4] = "70"; worksheet1.Cells[2, 5] = "70"; worksheet1.Cells[2, 6] = "70"; worksheet1.Cells[3, 1] = "Company B"; worksheet1.Cells[3, 2] = "30"; worksheet1.Cells[3, 3] = "70"; worksheet1.Cells[3, 4] = "80"; worksheet1.Cells[3, 5] = "80"; worksheet1.Cells[3, 6] = "80"; worksheet1.Cells[4, 1] = "Company C"; worksheet1.Cells[4, 2] = "55"; worksheet1.Cells[4, 3] = "65"; worksheet1.Cells[4, 4] = "75"; worksheet1.Cells[4, 5] = "75"; worksheet1.Cells[4, 6] = "75"; ChartObjects xlCharts = (ChartObjects)worksheet1.ChartObjects(Type.Missing); ChartObject myChart = (ChartObject) xlCharts.Add(60, 10, 300, 300); Range chartRange = worksheet1.get_Range("A1", "F4"); Chart chartPage = myChart.Chart; chartPage.SetSourceData(chartRange, System.Reflection.Missing.Value); chartPage.ChartType = XlChartType.xlLine;