NPOI 在新版本中增加了對圖表的有限支持(僅 xlsx 文件)
項目地址: https://github.com/tonyqus/npoi
支持折線圖和散點圖
來看demo :
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | constintNUM_OF_ROWS = 3;      constintNUM_OF_COLUMNS = 10;     staticvoidCreateChart(IDrawing drawing, ISheet sheet, IClientAnchor anchor, stringserie1, stringserie2)   {       varchart = drawing.CreateChart(anchor) asXSSFChart;        //生成图例       varlegend = chart.GetOrCreateLegend();  //图例位置       legend.Position = LegendPosition.TopRight;             //图表       vardata = chart.ChartDataFactory.CreateLineChartData<double, double>(); //折线图  //var data = chart.ChartDataFactory.CreateScatterChartData<double, double>(); //散点图       // X轴.       varbottomAxis = chart.ChartAxisFactory.CreateCategoryAxis(AxisPosition.Bottom);                  bottomAxis.IsVisible = false; //默认为true 不显示  设置为fase 显示坐标轴(BUG?)              //Y轴       IValueAxis leftAxis = chart.ChartAxisFactory.CreateValueAxis(AxisPosition.Left);       leftAxis.Crosses = (AxisCrosses.AutoZero);       leftAxis.IsVisible = false; //设置显示坐标轴       //数据源       IChartDataSource<double> xs = DataSources.FromNumericCellRange(sheet, newCellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1));              IChartDataSource<double> ys1 = DataSources.FromNumericCellRange(sheet, newCellRangeAddress(1, 1, 0, NUM_OF_COLUMNS - 1));       IChartDataSource<double> ys2 = DataSources.FromNumericCellRange(sheet, newCellRangeAddress(2, 2, 0, NUM_OF_COLUMNS - 1));              //数据系列       vars1 = data.AddSeries(xs, ys1);       s1.SetTitle(serie1);       vars2 = data.AddSeries(xs, ys2);       s2.SetTitle(serie2);       chart.Plot(data, bottomAxis, leftAxis);                   }   staticvoidMain(string[] args)   {       IWorkbook wb = newXSSFWorkbook();       ISheet sheet = wb.CreateSheet("linechart");       // Create a row and put some cells in it. Rows are 0 based.       IRow row;       ICell cell;       for(introwIndex = 0; rowIndex < NUM_OF_ROWS; rowIndex++)       {           row = sheet.CreateRow((short)rowIndex);           for(intcolIndex = 0; colIndex < NUM_OF_COLUMNS; colIndex++)           {               cell = row.CreateCell((short)colIndex);               cell.SetCellValue(colIndex * (rowIndex + 1));           }       }       IDrawing drawing = sheet.CreateDrawingPatriarch();       //锚点       IClientAnchor anchor1 = drawing.CreateAnchor(0, 0, 0, 0, 0, 5, 10, 15);       CreateChart(drawing, sheet, anchor1, "title1","title2");       IClientAnchor anchor2 = drawing.CreateAnchor(0, 0, 0, 0, 0, 20, 10, 35);       CreateChart(drawing, sheet, anchor2, "s1", "s2");       using(FileStream fs =File.Create("test.xlsx"))       {           wb.Write(fs);       }   } | 

很多特性都還不支持,這是比較難受的.將就用吧
From: https://www.cnblogs.com/sstn/p/9435337.html