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。多一点动态肯定会让它更有用。。另外,我总是避免写入系统根目录。这实际上为我将其保存到用户文档文件夹中