• 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不好查,这种方法争取后续补上。

  • 相关阅读:
    jquery 触发别的元素事件,并且传递参数
    jquery中的trigger和triggerHandler区别
    jquery 触发别的元素事件
    jquery 禁止页面form提交的通用方法
    对象序列化反序列化例子
    Access数据库访问助手类
    SQL Update 语句中使用别名
    C# 启动和结束进程
    ACCESS查询当天数据的SQL语句(DateDiff函数)
    解决Access数据库 不可识别的数据库格式 ***.accdb
  • 原文地址:https://www.cnblogs.com/Joker-phj/p/7403374.html
Copyright © 2020-2023  润新知