Я новичок в 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.
Итак, может кто-нибудь, пожалуйста, скажите мне, как я могу это сделать.
Заранее спасибо
Сейчас я могу наносить точки на график. Я предполагаю, что каждая серия диаграммы хранит точки, поэтому, просматривая серию, я могу получить все точки. Но я хочу знать, какую встроенную функцию я могу использовать для достижения своей цели? Если нет, то кто-нибудь может предоставить фрагмент кода.
Нет, но Linq позволит вам получить доступ к точкам и вытащить их данные в какую-либо структуру по вашему выбору.





Вы можете обратиться к следующему решение. Сначала вам нужно добавить ссылку на библиотеку объектов 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();
}
}
Просто замените ячейки и данные из кода на свои собственные данные и альт, когда вы нажимаете кнопку экспорта, он экспортирует их для вас.
«Виола» LOL. Немного больше динамики наверняка сделало бы его более полезным ... Также я всегда избегаю записи в корень системы.
Это фактически сохранило его для меня в папке "Документы пользователя".
В чем проблема? Зацикливаться на точках? Или создать файл, который можно импортировать в Excel? Что ты пробовал? В настоящее время этот вопрос слишком широк и не требует исследовательских усилий.