当我将数据表传递给下面的函数时,我可以生成excel文件.
public static void ExportDataTableToExcel(DataTable dt, string filepath) { object missing = Type.Missing; object misValue = System.Reflection.Missing.Value; //create excel Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); //add excel workbook Microsoft.Office.Interop.Excel.Workbook wb = excel.Workbooks.Add(); //add worksheet to workbook Microsoft.Office.Interop.Excel.Worksheet ws = wb.Sheets[1] as Microsoft.Office.Interop.Excel.Worksheet; //add 2nd worksheet to workbook Microsoft.Office.Interop.Excel.Worksheet ws2 = wb.Sheets[2] as Microsoft.Office.Interop.Excel.Worksheet; //Set the header-row bold ws.Range["A1", "A1"].EntireRow.Font.Bold = true; //Adjust all columns ws.Columns.AutoFit(); //spit top row ws.Application.ActiveWindow.SplitRow = 1; //insert image into worsheet 2 ws2.Shapes.AddPicture("C:\\Koala.JPG", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 50, 50, 300, 300); //freeze top row ws.Application.ActiveWindow.FreezePanes = true; int rowCount = 1; foreach (DataRow dr in dt.Rows) { rowCount += 1; for (int i = 1; i < dt.Columns.Count + 1; i++) { // Add the header the first time through if (rowCount == 2) { ws.Cells[1, i] = dt.Columns[i - 1].ColumnName; ws.Cells[1, i].Interior.ColorIndex = 40; // add cell border ws.Cells[1, i].Borders.LineStyle = Excel.XlLineStyle.xlContinuous; } ws.Cells[rowCount, i] = dr[i - 1].ToString(); // add cell border ws.Cells[rowCount, i].Borders.LineStyle = Excel.XlLineStyle.xlContinuous; } } Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)ws.UsedRange; Console.Write(range.ToString()); wb.SaveAs(@"C:\Test.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); wb.Close(missing, missing, missing); excel.Quit(); }
这个功能效果很好.我需要将C#代码中的图形添加到此excel文件中.我尝试了几种方法.但没有找到正确的实施方法.伙计们能帮助我吗?
看一下这里的教程(Google首次点击之一).
它非常清楚地描述了如何使用C#代码在Excel中创建一个简单的图表.
一般的想法是这样的:
// Add chart. 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. var 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);