NPOI是一個很強大的第三方類庫(自己是POI[java類庫]改過來的.net版本),其餘介紹本身去百度。這篇文章主要是最近有個需求,須要將餅圖導入到Excel中,這裏提供兩種解決方案(其實應該有三種)。java
第一種:將圖片寫入到Excel中測試
這種方式,須要本身先在代碼中生成餅圖,而後將圖片寫入到Excel中。.net
using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class Drawing : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { int[] data = { 100,200,300,460}; Color[] colors={Color.Green,Color.Blue,Color.Yellow,Color.Tomato}; Bitmap bm = new Bitmap(400,400); Graphics g = Graphics.FromImage(bm); g.Clear(Color.White); g.DrawString("餅圖測試",new Font("宋體",16),Brushes.Red,new PointF(5,5)); float totalValue = 0; foreach (int i in data) { totalValue += i; } float sweepAngle = 0; float startAngle = 0; int index=0; float x = 50f; float y = 50f; float width = 200f; foreach (int i in data) { sweepAngle=i/totalValue*360; g.FillPie(new SolidBrush(colors[index++]),x,y,width,width,startAngle,sweepAngle); //g.DrawPie(Pens.Black,x,y,width,width,startAngle,sweepAngle); //加邊線代碼 startAngle += sweepAngle; } bm.Save(Response.OutputStream,ImageFormat.Jpeg); g.Dispose(); } }
//g.DrawPie(Pens.Black,x,y,width,width,startAngle,sweepAngle);給餅圖加邊線
第二種:用Excel模板導出orm
第二種方式須要本身先手動建立一個帶Excel文檔,裏面插入一個圖表,定義好數據源,根據傳入的數據源,Excel自動生成餅圖。blog
第三種:NPOI自己自帶生成圖表的類庫,是能夠自定義生成的,可是APi很差查,這種方法爭取後續補上。圖片