C# 将图表导出到Excel文件
我是新来的C# 将图表导出到Excel文件,c#,excel,winforms,charts,export,C#,Excel,Winforms,Charts,Export,我是新来的C#Programming。我正在创建一个winform应用程序,其中我正在使用System.Windows.Forms.DataVisualization图表。此图表包含多个系列。我想将图表数据导出到Excel文件 将数据添加到我正在使用的图表中 chart.Series[mSeries].Points.AddXY(dt, avgData); dt是当前日期时间和数据 所以我的Excel文件看起来像 第一列是系列名称,第二列是日期时间,第三列包含数据 那么,谁能告诉我怎么做 提前
C#Programming
。我正在创建一个winform应用程序
,其中我正在使用System.Windows.Forms.DataVisualization图表
。此图表包含多个系列。我想将图表数据导出到Excel文件
将数据添加到我正在使用的图表中
chart.Series[mSeries].Points.AddXY(dt, avgData);
dt是当前日期时间
和数据
所以我的Excel文件看起来像
第一列是系列名称
,第二列是日期时间
,第三列包含数据
那么,谁能告诉我怎么做
提前感谢您可以参考以下内容。首先,您需要添加对Microsoft Excel COM对象库的引用。请参阅此链接,了解如何使用。接下来的步骤很简单。您需要从上面的链接添加代码,并用自定义数据替换您在Excel中输入的数据
下面是链接中显示的代码
private void button1_Click(object sender, EventArgs e)
{
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
for (int i = 0; i < chart1.Series.Count; i++)
{
xlWorkSheet.Cells[1, 1] = "";
xlWorkSheet.Cells[1, 2] = "DateTime";//put your column heading here
xlWorkSheet.Cells[1, 3] = "Data";// put your column heading here
for (int j = 0; j < chart1.Series[i].Points.Count; j++)
{
xlWorkSheet.Cells[j + 2 , 2] = chart1.Series[i].Points[j].XValue;
xlWorkSheet.Cells[j + 2 , 3] = chart1.Series[i].Points[j].YValues[0];
}
}
Excel.Range chartRange;
Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing);
Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 80, 300, 250);
Excel.Chart chartPage = myChart.Chart;
chartRange = xlWorkSheet.get_Range("B2", "c5");//update the range here
chartPage.SetSourceData(chartRange, misValue);
chartPage.ChartType = Excel.XlChartType.xlColumnClustered;
xlWorkBook.SaveAs("csharp.net-informations.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
MessageBox.Show("Excel file created , you can find the file c:\\csharp.net-informations.xls");
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
private void按钮1\u单击(对象发送者,事件参数e)
{
Excel.applicationxlapp;
Excel.工作簿;
Excel工作表;
对象错误值=System.Reflection.Missing.Value;
xlApp=new Excel.Application();
xlWorkBook=xlApp.Workbooks.Add(错误值);
xlWorkSheet=(Excel.Worksheet)xlWorkBook.Worksheets.get_项(1);
对于(int i=0;i
单击“导出”按钮时,只需将代码中的单元格和数据替换为自定义数据和viola,它就会为您导出这些数据。问题出在哪里?在这些点上循环?或者创建一个可以导入excel的文件?你试了什么?就目前而言,这个问题过于宽泛,并没有显示出任何研究成果。到目前为止,我能够在图表上列出要点。我假设每个系列的图表都存储了点,所以通过遍历系列我可以得到所有的点。但我想知道他们有什么内在的功能我可以用来实现我的目标吗?如果没有,那么有人可以提供一些代码片段。没有,但是Linq会让你访问这些点,并将它们的数据提取到你选择的某个结构。“Viola”LOL。多一点动态肯定会让它更有用。。另外,我总是避免写入系统根目录。这实际上为我将其保存到用户文档文件夹中