zoukankan      html  css  js  c++  java
  • NPOI导出饼图到Excel

    NPOI是一个很强大的第三方类库(本身是POI[java类库]改过来的.net版本),其他介绍自己去百度。这篇文章主要是最近有个需求,需要将饼图导入到Excel中,这里提供两种解决方案(其实应该有三种)。

    第一种:将图片写入到Excel中

      这种方式,需要自己先在代码中生成饼图,然后将图片写入到Excel中。

      

    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模板导出

      第二种方式需要自己先手动创建一个带Excel文档,里面插入一个图表,定义好数据源,根据传入的数据源,Excel自动生成饼图。

    第三种:NPOI本身自带生成图表的类库,是可以自定义生成的,但是APi不好查,这种方法争取后续补上。

  • 相关阅读:
    SSH--1
    oracle---jdbctest--laobai
    oracle---jdbc--laobai
    oracle--知识点汇总2---laobai
    Tomcat_Java Web_内存溢出总结
    单例经典示例
    线程--demo3
    网络通信---示例
    验证码---示例
    java--绘图
  • 原文地址:https://www.cnblogs.com/Joker-phj/p/7403374.html
Copyright © 2011-2022 走看看