目的:

1.根据模板里面的excel数据信息,动态创建line chart

2.linechart 的样式改为灰色

3.以流的形式写到客户端,不管客户端是否装excel,都可以导出到到客户端

4.使用Aspose.Cells的基本功能

5.使用mvc测试代码

导出到excel里面的效果图

excel里面的数据源sheet2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    2001    2002    2003    2004    2005    2006    2007
中原地产    10  20  30  40  50  70  80
上海中原    30  80  44  55  88  90  120
河北中原    24  45  55  66  88  90  70
南京中原    44  55  66  77  88  99  90
背景中原    11  34  36  37  33  32  21
中原地产2   10  20  30  40  50  70  80
上海中原3   30  80  44  55  88  90  120
上海中原4   24  45  55  66  88  90  70
上海中原5   44  55  66  77  88  99  90
上海中原6   11  34  36  37  33  32  21
上海中原7   10  20  30  40  50  70  80
上海中原8   30  80  44  55  88  90  120
上海中原9   24  45  55  66  88  90  70
上海中原10  44  55  66  77  88  99  90
上海中原11  11  34  36  37  33  32  21
中原地产12  10  20  30  40  50  70  80
上海中原13  30  80  44  55  88  90  120
上海中原14  24  45  55  66  88  90  70
上海中原15  44  55  66  77  88  99  90
上海中原16  11  34  36  37  33  32  21
上海中原17  10  20  30  40  50  70  80
上海中原18  30  80  44  55  88  90  120
上海中原19  24  45  55  66  88  90  70
上海中原21  44  55  66  77  88  99  90
上海中原22  11  34  36  37  33  32  21

  

入口方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public ActionResult excels()
{
WorkbookDesigner designer = new WorkbookDesigner();
string path = Server.MapPath("/Templete/11111.xls");
designer.Workbook.Open(path);
Workbook workbook = designer.Workbook;
//创建一个chart到页面
CreateStaticReport1(workbook);
designer.Process();
//将流文件写到客户端流的形式写到客户端,名称是_report.xls
designer.Save("_report.xls", SaveType.OpenInExcel, FileFormatType.Excel2003, System.Web.HttpContext.Current.Response);
Response.Flush();
Response.Close();
designer = null;
// Response.End();
return View("getexcel");
 
}

生成chart方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
private void CreateStaticReport1(Workbook workbook)
{
    //创建一个折线图
    workbook.Worksheets[0].Charts.Add(ChartType.Line, 1, 1, 25, 10);
    Aspose.Cells.Chart chart = workbook.Worksheets[0].Charts[0];
 
    //折线区域竖线设置为显示颜色设置为灰色
    chart.CategoryAxis.MajorGridLines.IsVisible = true;
   chart.CategoryAxis.MajorGridLines.Color = Color.Gray;
   //折线区域设置横着的网格线显示          
    chart.MajorGridLines.IsVisible = true;
    chart.MajorGridLines.Color = Color.Gray;
 
    //设置title样式
    chart.Title.Text = "Sales By Region For Years";
    chart.Title.TextFont.Color = Color.Gray;
    chart.Title.TextFont.IsBold = true;
    chart.Title.TextFont.Size = 12;
 
    //Set Properties of nseries
    chart.NSeries.Add("Sheet2!B2:H26"false);
 
    //Set NSeries Category Datasource
    chart.NSeries.CategoryData = "Sheet2!B1:H1";
 
   
 
    Cells cells = workbook.Worksheets[1].Cells;
    //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].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 = true;
        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.Cells 设置chart的y坐标轴显示值

目的:设置chart的y坐标轴显示值

用aspose.cell生成的chart生成的Y轴是默认生成的,自己要定义y轴坐标值
1.把数据源写到excel里面,list里面
2.y轴坐标自己定义

第一种:默认设置:chart里面会自己定义y轴坐标
第二种:y周坐标以对数显示 chart.ValueAxis.IsLogarithmic = true; 以10 100 1000格式显示
第三种:只设置间隔值 chart.ValueAxis.MajorUnit =20000;,会自动获取y轴的最大值与最小值
第四种:设置y轴的最大值与最小值,设置间隔值
//设置y坐标轴的厚度
chart.ValueAxis.AxisLine.Weight = WeightType.WideLine;
chart.ValueAxis.Title.Text = "y轴坐标";
chart.ValueAxis.MajorUnit =20000;//设置y轴的显示值间隔
chart.ValueAxis.MaxValue = 200000;//设置y轴开始最大值
chart.ValueAxis.MinValue = 0;//设置y轴的最小值

3.设置右边坐标轴是不是显示
//设置右边坐标轴显示
chart.SecondValueAxis.IsVisible = true;
//设置y坐标轴间隔值字大小
chart.SecondValueAxis.TickLabels.Font.Size = 12;
chart.SecondValueAxis.Title.Text = "y轴坐标2";

导出效果:

//设置y坐标轴的厚度
chart.ValueAxis.AxisLine.Weight = WeightType.WideLine;
chart.ValueAxis.Title.Text = "y轴坐标";
chart.ValueAxis.MajorUnit =20000;//设置y轴的显示值间隔
chart.ValueAxis.MaxValue = 200000;//设置y轴开始最大值
chart.ValueAxis.MinValue = 0;//设置y轴的最小值

第二种:y周坐标以对数显示 chart.ValueAxis.IsLogarithmic = true; 以10 100 1000格式显示

//设置y坐标轴的厚度
chart.ValueAxis.AxisLine.Weight = WeightType.WideLine;
chart.ValueAxis.Title.Text = "y轴坐标";
chart.ValueAxis.MajorUnit =20000;//设置y轴的显示值间隔
chart.ValueAxis.MaxValue = 80000;//设置y轴开始最大值
chart.ValueAxis.MinValue = 0;//设置y轴的最小值

入口函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public ActionResult excels()
       {
           WorkbookDesigner designer = new WorkbookDesigner();
           string path = Server.MapPath("/Templete/11111.xls");
           designer.Workbook.Open(path);
           Workbook workbook = designer.Workbook;
           CreateStaticData(workbook);
           CreateStaticReport(workbook);
           designer.Process();
           //将流文件写到客户端流的形式写到客户端,名称是_report.xls
           designer.Save("_report.xls", SaveType.OpenInExcel, FileFormatType.Excel2003, System.Web.HttpContext.Current.Response);
           Response.Flush();
           Response.Close();
           designer = null;
           // Response.End();
           return View("getexcel");
       }

设置数据源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
private void CreateStaticData(Workbook workbook)
      {
          //Initialize Cells object
          Cells cells = workbook.Worksheets[0].Cells;
 
          //Put string into a cells of Column A
          cells["A1"].PutValue("class");
          cells["A2"].PutValue("红萝卜");
          cells["A3"].PutValue("白萝卜");
          cells["A4"].PutValue("青萝卜");
 
          //Put a value into a Row 1
          cells["B1"].PutValue(2002);
          cells["C1"].PutValue(2003);
          cells["D1"].PutValue(2004);
          cells["E1"].PutValue(2005);
          cells["F1"].PutValue(2006);
 
          //Put a value into a Row 2
          cells["B2"].PutValue(40000);
          cells["C2"].PutValue(45000);
          cells["D2"].PutValue(50000);
          cells["E2"].PutValue(55000);
          cells["F2"].PutValue(70000);
 
          //Put a value into a Row 3
          cells["B3"].PutValue(10000);
          cells["C3"].PutValue(25000);
          cells["D3"].PutValue(40000);
          cells["E3"].PutValue(52000);
          cells["F3"].PutValue(60000);
 
          //Put a value into a Row 4
          cells["B4"].PutValue(5000);
          cells["C4"].PutValue(15000);
          cells["D4"].PutValue(35000);
          cells["E4"].PutValue(30000);
          cells["F4"].PutValue(20000);
      }

设置chart y轴的显示值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
private void CreateStaticReport(Workbook workbook)
     {
         //初始化 Worksheet
         Worksheet sheet = workbook.Worksheets[0];
         //设置 worksheet名称
         sheet.Name = "Line";
         //设置worksheet不显示
         sheet.IsGridlinesVisible = false;
         //根据数据源 创建 chart
         int chartIndex = 0;
         chartIndex = sheet.Charts.Add(ChartType.Line, 5, 1, 29, 15);
         //初始化chart
         Chart chart = sheet.Charts[chartIndex];
         //设置竖线不显示
         chart.CategoryAxis.MajorGridLines.IsVisible = false;
         //设置Title样式
         chart.Title.Text = "Sales By Class For Years";
         chart.Title.TextFont.Color = Color.Black;
         chart.Title.TextFont.IsBold = true;
         chart.Title.TextFont.Size = 12;
         //设置chart的数据源
         chart.NSeries.Add("B2:F4"false);
         chart.NSeries.CategoryData = "B1:F1";
         //Set Nseries color varience to True
         chart.NSeries.IsColorVaried = true;
         //初始化 Cells
         Cells cells = workbook.Worksheets[0].Cells;
         //循环 cells
         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;
             //设置系列的名称 Background 与ForeGround
             chart.NSeries[i].MarkerBackgroundColor = Color.Yellow;
             chart.NSeries[i].MarkerForegroundColor = Color.Gold;
             //设置系列标记
             chart.NSeries[i].MarkerSize = 10;
             //设置Category的名称
             chart.CategoryAxis.Title.Text = "Year(2002-2006)";
             chart.CategoryAxis.Title.TextFont.Color = Color.Black;
             chart.CategoryAxis.Title.TextFont.IsBold = true;
             chart.CategoryAxis.Title.TextFont.Size = 10;
             //设置图例的位置
             chart.Legend.Position = LegendPositionType.Top;
         }
 
         //设置y轴的样式
         chart.ValueAxis.TickLabelPosition = TickLabelPositionType.NextToAxis;
         chart.ValueAxis.TickLabels.Font.Color = Color.Gray;
         chart.ValueAxis.AxisBetweenCategories = false;
         //chart.ValueAxis.TickLabels.Font.Size = 13;
         chart.ValueAxis.TickLabels.Font.IsBold = true;
         //Y坐标轴对数间隔展示
         // chart.ValueAxis.IsLogarithmic = true;
         chart.ValueAxis.MajorGridLines.Color = Color.Red;
         chart.ValueAxis.AxisLine.Color = Color.DarkGreen;
         //设置y坐标轴的厚度
         chart.ValueAxis.AxisLine.Weight = WeightType.WideLine;
         chart.ValueAxis.Title.Text = "y轴坐标";
         chart.ValueAxis.MajorUnit = 20000;//MajorUnit =2000;
         chart.ValueAxis.MaxValue = 200000;
         chart.ValueAxis.MinValue = 0;
         //设置右边坐标轴显示
         chart.SecondValueAxis.IsVisible = true;
         //设置y坐标轴间隔值字大小
         chart.SecondValueAxis.TickLabels.Font.Size = 12;
         chart.SecondValueAxis.Title.Text = "y轴坐标2";
         // chart.SecondValueAxis.MinorGridLines.IsVisible = true;
     }

使用Aspose.Cells生成Excel的线型图表的更多相关文章

  1. EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类

    大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...

  2. 使用Aspose.Cells生成Excel的方法详解(转)

    using System; using System.Collections.Generic;  using System.Linq;  using System.Web;  using System ...

  3. 使用Aspose.Cells读取Excel

      最新更新请访问: http://denghejun.github.io Aspose.Cells读取Excel非常方便,以下是一个简单的实现读取和导出Excel的操作类: 以下是Aspose.Ce ...

  4. 报表中的Excel操作之Aspose.Cells(Excel模板)

    原文:报表中的Excel操作之Aspose.Cells(Excel模板) 本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件.这个组件的强大之处,就不多说,对于我们的报表总是会有导 ...

  5. Aspose.Cells导出Excel(1)

    利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...

  6. 怎么使用Aspose.Cells读取excel 转化为Datatable

    说明:vs2012 asp.net mvc4 c# 使用Aspose.Cells 读取Excel 转化为Datatable 1.HTML前端代码 <%@ Page Language=" ...

  7. 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称

    说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...

  8. Aspose.cells 读取Excel表中的图片问题

    一.说明 本文主要是讲解,怎么使用aspose.cells读取Excel表中的图片,并把图片转换成流或是image对象. 二.开发环境说明 开发工具vs2012,c#语言, 三.Aspose.cell ...

  9. 使用 Aspose.Cells 实现 excel导入

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

随机推荐

  1. 2017BUAA软工个人项目之数独生成与求解

    1.项目GitHub地址:https://github.com/ZiJiaW/Soduko (由于一开始把sudoku看成了soduko,于是名字建错了,读起来可能有点奇怪…) 2.项目PSP表格如下 ...

  2. JavaScript(ECMAScript) with 语句

    有同事,爱尝鲜,JavaScript ECMAScript with 语句,找了半天不知道局部变量的出处,原来是with语句搞得鬼. http://www.w3school.com.cn/js/pro ...

  3. Win10删除微软拼音输入法的方法

    1. 控制面板 2.更换输入法 选择添加语言 添加上英文输入法之后 进行上下移动 然后删除中文输入法即可 需要在英文的语言栏里面添加-选项-增加输入法 然后删除中文即可.

  4. [日常工作]WorkStation 使用端口转发的方式使用宿主机IP地址提供服务

    1. 虚拟机内的地址如果经常变化,或者是想使用宿主机进行网络服务 但是又不想有人能够访问具体的服务器提供机器.. 可以使用宿主机转发虚拟机的端口的方式来进行处理. workstation 比较好实现 ...

  5. spark中saveAsTextFile的错误

    写了很简单的一段spark代码,将结果保存为windows本地文件,执行之后总是报错NullPointerException 查询之后 发现是本地缺少hadoop需要的一个文件所致 如果本地已经安装了 ...

  6. html5 画布和SVG的差别

    canvas和SVG可以在浏览器绘制图形,但是本质上是不同的.canves是绘制2d图象,SVG也是绘制2d图象. Canvas是Javascript进行绘图的,是逐像素绘图.Canvas一旦图象绘制 ...

  7. python之tkinter使用-窗口居中显示

    # 窗口居中显示 import tkinter as tk def set_win_center(root, curWidth='', curHight=''): ''' 设置窗口大小,并居中显示 : ...

  8. python之tkinter使用-多选框实现开关操作

    # tkinter的Checkbutton实现开关操作 import tkinter as tk root = tk.Tk() root.title('开关') root.geometry('170x ...

  9. BZOJ1500[NOI2005]维修数列——非旋转treap

    题目描述 请写一个程序,要求维护一个数列,支持以下 6 种操作: 请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格 输入 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初 ...

  10. Code First NotMapped

    转载:http://www.cnblogs.com/libingql/p/3352058.html 不需要映射的字段,添加 NotMapped 6.非数据库字段属性 在类中,如果有一些属性不需要映射到 ...