Aspose.Cell组件,实现图表的插入(每一行都有注释+效果图)

我这里插入的图表是: 《含有资料标记的折线图》

创建一个图表
workbook.Worksheets[0].Charts.Add(ChartType.图表类型,行,列,高,宽)
ChartType枚举里面就是图表类型,这个枚举的命名比较规范,可以根据名字去找到你想要的图表(不会英语的用翻译网站翻译一下就知道啦;比如我,哈哈)

话不多说,直接上代码

每一行代码都有注释,如果看不懂,评论区留下问题。

public IActionResult PrintExcel()  
{
	//创建Excel对象
    Workbook workbook = new Workbook();
    Workbook mBook = workbook;
    //读取第一个sheet对象
    Worksheet sheet = mBook.Worksheets[0];
    //第一个sheet的单元格对象
    Cells mcells = sheet.Cells;

    //这里顺便记录一下,设置单元格样式的属性
    Style Titlestyle = mBook.CreateStyle();
    //----------------------背景颜色--------------------
    //一定是两行代码都在,才会有效果
    Titlestyle.ForegroundColor = Color.FromArgb(192, 192, 192);
    Titlestyle.Pattern = BackgroundType.Solid;
    //----------------------背景颜色--------------------
    Titlestyle.IsTextWrapped = true;//自動換行
    Titlestyle.HorizontalAlignment = TextAlignmentType.Center;//水平居中
    Titlestyle.VerticalAlignment = TextAlignmentType.Center;//垂直居中
    Titlestyle.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //左边框 
    Titlestyle.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; //右边框  
    Titlestyle.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; //上边框  
    Titlestyle.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //下边框
	//给单元格赋值
	List<string> Name = new List<string> {"小白","大白" };
    List<double> XiaoBai = new List<double> {-0.2,-0.2 ,-0.2,-0.1,0.5};
    List<double> DaBai = new List<double> { -0.3, -0.1, -0.2, 0.1, -0.1 };
    for (int i = 0; i < Name.Count; i++)
    {
    	 //标题
         cells[i+2, 0].PutValue(Name[i].ToString());
         //小白对应的值
         if (Name[i].ToString() == "小白")
         {
              for (int j = 0; j < XiaoBai.Count; j++)
              {
                   cells[i+2, j].PutValue(XiaoBai[j]);
              }
         }
         //大白对应的值
         else {
              for (int g = 0; i < DaBai.Count; g++)
              {
                   cells[i+2, g].PutValue(XiaoBai[g]);
              }
         }
  	 }

	//-------------------------------插入图表-------------------------------
	//创建一个折线图,后面參數一共有5个参数,咱们一个一个说
	//workbook.Worksheets[0].Charts.Add(type,upperLeftRow,upperLeftColumn,lowerRightRow,lowerRightColumn)
	//1、ChartType type 图表类型 ,CharType枚举类型有Excel中所有的图表 
	//2、int upperLeftRow 把这个图表放在第几行 
	//3、int upperLeftColumn 把这个图表放在第几列
	//4、int lowerRightRow 高度=(upperLeftRow+你设定的高度)
	//5、int lowerRightColumn 宽度=(upperLeftColumn+你设定的宽度)   
	//(宽度和高度的单位是单元格,1就是一个单元格,2就是两个单元格)   
	//我这里是6*7的规格,图表是 :《含有资料标记的折线图》
    workbook.Worksheets[0].Charts.Add(ChartType.LineWithDataMarkers, 4, 2,4+6,2+7);
    //刚刚创建的图表的对象,只能通过索引去访问,如果有多个图表,注意索引值
    Chart chart = workbook.Worksheets[0].Charts[0];
    //X轴
    chart.CategoryAxis.TickLabelPosition = TickLabelPositionType.Low;//显示位置调为低
    //Y轴
    chart.SecondValueAxis.IsVisible = false;
    chart.ValueAxis.MajorUnit = 0.2;//设置y轴的显示值间隔
    chart.ValueAxis.MaxValue = 0.5;//设置y轴开始最大值
    chart.ValueAxis.MinValue = -0.5;//设置y轴的最小值
    //折线名称(不知道这是啥的,看下面的效果图)
    chart.Legend.Position = LegendPositionType.Left;
    chart.Legend.TextFont.Color = Color.Gray;
    chart.Legend.Border.Color = Color.Gray;
    //数据区间
    //需要注意的是:只要数据的单元格区间,不要把折线名称的单元格区间加进去了
    //没搞清楚的,可以看看效果图
    //如果数据在Sheet2中,区间就这么写"Sheet2!B3:F4"
    chart.NSeries.Add("B3:F4", false);

    //设置折线名称的数据(不知道这是啥的,看下面的效果图)
    for (int i = 0; i < Name.Count; i++)
    {
        chart.NSeries[i].Name = cells[i, 0].Value;//设置名称
        chart.NSeries[i].DataLabels.IsValueShown = false;//属于它的线是否需要显示值
        chart.NSeries[i].DataLabels.TextFont.Color = Color.Gray;//字体颜色
    }    
	//把Excel对象转换为字节
	byte[] rv = new byte[] { };
    using (MemoryStream ms = mBook.SaveToStream())
    {
        rv = ms.ToArray();
    }
    //文件类型
    string ContentType = "application/vnd.ms-excel";
    //文件名称
    var ExportName = "Excel名字.xls";
    //根据Excel字节,生成 FileContentResult对象
    FileContentResult Result = new FileContentResult(rv, ContentType);
    //指定文件名称
    Result.FileDownloadName = ExportName;
    return Result;

}

效果图:

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值