c# - 将图表导出到 Excel 文件
问题描述
我是新来的C# Programming
。我正在创建一个winform application
我正在使用System.Windows.Forms.DataVisualization Chart
的 . 这chart
包含多个系列。我想将该图表数据导出到 Excel 文件。
要将数据添加到我正在使用的图表中
chart.Series[mSeries].Points.AddXY(dt, avgData);
dt 是current DateTime
和data
.
所以我的 Excel 文件看起来像
第一列是Series Name
,第二列是,DateTime
第三列包含data
。
所以,谁能告诉我我该怎么做。
提前致谢
解决方案
您可以参考以下解决方案。首先,您需要添加对 COM 的 Microsoft Excel 对象库的引用。请参阅此链接了解如何添加. 然后下一步很简单。您需要添加来自上述链接的代码,并将您在 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();
}
}
只需将代码中的单元格和数据替换为您的自定义数据和中提琴,当您单击导出按钮时,它将为您导出。
推荐阅读
- php - 如何在 Debian Buster 上安装 php 调试符号?
- android - 将图像放在 Activity 上
- c# - 管理 VSPackage 中的敏感选项数据
- php - 我想从 api 将视频上传到 vimeo
- variables - Nginx 配置 proxy_pass 与基于图像扩展的条件
- c++ - 是否安全调用 qWarning("%s", qUtf8Printable(key));
- sql - Oracle 查询:日期过滤器变得非常慢
- javascript - 将 aws lambda 连接到 rds 的断开响应
- c# - 如果在c#中不等于条件
- mysql - 从 bash 运行 mysql 命令的问题 - 从 phpmyadmin 复制