Aspose.cell 生成折线图

4 篇文章 0 订阅
2 篇文章 0 订阅

网上找了很多资料但是发现不行 老是报错,所以自己苦心研究,终于没毛病

废话不多说 直接上代码

首先引用命名空间 在这里要注意了 Aspose.Cell 有正版的这个要收费的,也有一大把破解版的

using Aspose.Cells;
using Aspose.Cells.Charts;

Excel 方法

public ActionResult Excels()
{
WorkbookDesigner designer = new WorkbookDesigner();
string Template_File_Path = Server.MapPath("/Feil/模板.xlsx");

FileStream fileStream = new FileStream(Template_File_Path, FileMode.Open, FileAccess.Read, FileShare.Read);
//designer.Workbook = new Workbook(fileStream);
//WorksheetCollection worksheets = designer.Workbook.Worksheets;

 Workbook workbook = new Workbook(fileStream);
 Worksheet sheet = workbook.Worksheets[0]; //第一个工作表 
Cells cells = sheet.Cells;//单元格
//这里定义的是横坐标  通常我们叫做x轴
 string[] listsum = new string[] { "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010" };
 //以下两个数组是我们要使用的数据
int[] str2sum = new int[] { 1, 2, 3, 5, 6, 2, 4, 3, 5, 1 };
int[] str3sum = new int[] { 5, 2, 1, 5, 6,7,2, 3,1, 3 };
//定义样式  后面可调用
Aspose.Cells.Style style = new Aspose.Cells.Style();
style.IsLocked = true;
style.HorizontalAlignment = TextAlignmentType.Center;//文字居中  
style.Font.Name = "宋体";//文字字体 
style.Font.Size = 12;//文字大小 
style.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //应用边界线 左边界线  
style.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = CellBorderType.Thin; //应用边界线 右边界线  
style.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = CellBorderType.Thin; //应用边界线 上边界线  
style.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //应用边界线 下边界线 


for (int i = 0; i < listsum.Length; i++)
   {
   //由于项目的需要   根据每个人的需要走  Cells[0,0] 代表的就是第一行第一个单元格 celis[0,1] 代表的就是第一行第二个单元格 以此类推  cells[2,0] 就是第三行第一个单元格
       cells[0, i+1].PutValue(listsum[i]);
       cells[0, 0].SetStyle(style);//这个主要是给第一行第一列单元格加样式
       cells[0, i+1].SetStyle(style);
       cells.SetColumnWidthPixel(3, 69);
   }
   //复制第二行数据
for (int i = 0; i < str2sum.Length; i++)
 {
     cells[1, 0].PutValue("观察点A");
     cells[1, 0].SetStyle(style);
     cells[1, i + 1].PutValue(str2sum[i]);
     cells[1, i + 1].SetStyle(style);
     cells.SetColumnWidthPixel(3, 69);
 }
 //赋值第三行数据
 for (int i = 0; i < str3sum.Length; i++)
 {
     cells[2, 0].PutValue("观察点B");
     cells[2, 0].SetStyle(style);
     cells[2, i + 1].PutValue(str3sum[i]);
     cells[2, i + 1].SetStyle(style);
     cells.SetColumnWidthPixel(3, 69);
 }


  //创建一个chart到页面    调用CreateStaticReport2()方法
  CreateStaticReport2(workbook);
  designer.Process();



System.IO.MemoryStream ms = workbook.SaveToStream();//生成数据流 
byte[] bt = ms.ToArray();
string fileName = "自动化监测表" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";//客户端保存的文件名 
//以字符流的形式下载文件  
Response.ContentType = "application/vnd.ms-excel";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bt);
Response.Flush();
Response.End();
//return View("getexcel");

}

曲线图方法

private void CreateStaticReport2(Workbook workbook)
 {
     //创建一个折线图                  后面的112510都是设置char图的                  
   workbook.Worksheets[0].Charts.Add(ChartType.Line, 1, 1, 25, 10);
     Aspose.Cells.Charts.Chart chart = workbook.Worksheets[0].Charts[0];

     //折线区域竖线设置为显示颜色设置为灰色
     chart.CategoryAxis.MajorGridLines.IsVisible = true;
     chart.CategoryAxis.MajorGridLines.Color = Color.Gray;
     //折线区域设置横着的网格线显示          
     //chart.CategoryAxis.MajorTickMark;
     //chart.CategoryAxis.MajorGridLines.Color = Color.Gray;

     //设置title样式
     chart.Title.Text = "自动化监测折线表-1";
     chart.Title.TextFont.Color = Color.Gray;
     chart.Title.TextFont.IsBold = true;
     chart.Title.TextFont.Size = 12;


     Cells cells = workbook.Worksheets[0].Cells;

     //Set Properties of nseries控制折线有多长 控制系列显示多少 
     //注意:这里的A2:F2代表什么Excel你仔细点就会发现第一列是A,第2列是B,所以在这里一定要注意
     chart.NSeries.Add("Sheet1!A2:F" +Convert.ToInt32(cells.Rows.Count) + "", false);

     //Set NSeries Category Datasource
     chart.NSeries.CategoryData = "Sheet1!H1:F9";


     //for (int i = 0; i < cells.Rows.Count; i++)
     //{
     //    if (i == 0)
     //    {
     //        continue;
     //    }
     //    string name = cells[i, 6].Value.ToString();
     //    //设置每条折线的名称
     //    chart.NSeries[i-1].Name = name;
     //}


     //loop over the Nseriese
     for (int i = 0; i < chart.NSeries.Count; i++)
     {
         //设置系列的名称
         chart.NSeries[i].Name = cells[i + 1, 0].Value.ToString();
         chart.NSeries[i].MarkerStyle = ChartMarkerType.Circle;

         //设置线的宽度
         chart.NSeries[i].Line.Weight = WeightType.MediumLine;

         //设置每个值坐标点的样式
         chart.NSeries[i].MarkerStyle = ChartMarkerType.Circle;
         chart.NSeries[i].MarkerSize = 5;
         chart.NSeries[i].MarkerBackgroundColor = Color.White;
         chart.NSeries[i].MarkerForegroundColor = Color.Gray;

         每个折线向显示出值
         chart.NSeries[i].DataLabels.IsValueShown = false;
         chart.NSeries[i].DataLabels.TextFont.Color = Color.Gray;

     }

     //设置x轴上数据的样式为灰色
     chart.CategoryAxis.TickLabels.Font.Color = Color.Gray;
     chart.CategoryAxis.TickLabelPosition = TickLabelPositionType.NextToAxis;

     //设置y轴的样式
     chart.ValueAxis.TickLabelPosition = TickLabelPositionType.Low;
     chart.ValueAxis.TickLabels.Font.Color = Color.Gray;
     // chart.ValueAxis.TickLabels.TextDirection = TextDirectionType.LeftToRight;
     //设置Legend位置以及样式
     chart.Legend.Position = LegendPositionType.Bottom;
     chart.Legend.TextFont.Color = Color.Gray;
     chart.Legend.Border.Color = Color.Gray;
 }

这里写图片描述

在此附上Aspose.cell dl下载地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值