这两天项目上用Aspose导出Excel来着。开始感觉挺简单的,但是实际操作起来还是挺复杂的,调试占的时间很长。主要是动态生成列、合并单元格、调样式占了很长时间,还是总结一下吧。

  基础操作:

  //EXCEL模板路径

  var filePath = HttpContext.Current.Server.MapPath("~/" + ConfigurationManager.CurrentPackage.Settings["FilePath"]);

  //打开模板sheet

var book = new Workbook();
    book.Open(filePath);
    var sheet = book.Worksheets[0];

//根据需要给单元格赋值,Excel行列的索引都是从0开始的。

  sheet.Cells[i,j].PutValue("**");

  动态生成列:

  根据模板情况访问数据库得到DataTable,尽量得到和Excel布局相近的数据记录。循环写单元格,合并需要合并的单元格,设置样式。

  合并单元格: 

    //合并标题行,因为列是动态添加的,所以标题居中显示,得重新根据列宽合并单元格
    Range rangeTitle = sheet.Cells.CreateRange(firstRow, firstColumn, totalRows, totalColumns);//创建需要合并的Range范围再进行合并
      //rangeTitle.UnMerge(); //如果这个范围中本来n个单元格已经是合并过的,需要取消合并再Merge,否则会报错。
    rangeTitle.Merge(); //合并range

  样式:

    int styleIndex = book.Styles.Add(); //在当前样式集合中创建一个样式,返回创建样式索引,设置样式必须在原有样式集合中再添加一个样式,否则会覆盖原样式
    Style style = book.Styles[styleIndex]; 
    style.RotationAngle = 255; //这个角度值研究了半天,可以把汉字从左到右显示,改成从上到下,垂直显示。可以试一下。

    Range range = sheet.Cells.CreateRange(startRowIndex - catalogNameRowSpan + 1, 0, catalogNameRowSpan, 1); //得到要使用样式的范围
    range.SetStyle(style); //设置样式

    //根据原有样式,拷贝样式

    Range rangeRows = sheet.Cells.CreateRange(firstRow, firstColumn, totalRows, totalColumns);//要赋样式的范围
    rangeRows.CopyStyle(sheet.Cells.CreateRange(4, 1, 1, 6)); //把(4, 1, 1, 6)的样式赋到rangeRows范围上。

    //应用样式(给单元格加边框,每个边的框宽度根据多次设置样式的最大粗细为准)

    Style GridStyle = book.Styles[book.Styles.Add()];
    GridStyle.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Medium; //设置上边框粗细
    GridStyle.Borders[BorderType.TopBorder].Color = Color.Black; //设置边框颜色
    GridStyle.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Medium;//设置下边框粗细
    GridStyle.Borders[BorderType.BottomBorder].Color = Color.Black;
    GridStyle.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;//设置左边框粗细
    GridStyle.Borders[BorderType.LeftBorder].Color = Color.Black;
    GridStyle.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Medium;//设置右边框粗细
    GridStyle.Borders[BorderType.RightBorder].Color = Color.Black;
    GridStyle.HorizontalAlignment = TextAlignmentType.Center;//文本居中对齐
    GridStyle.Font.Size = 9; //设置字体9号
    Range range1 = sheet.Cells.CreateRange(4, 0, 1, 6 + totalColumns); //样式应用范围
    StyleFlag borderStyle = new StyleFlag(); //标示集合,启用哪个样式
    borderStyle.Borders = true; //启用Borders样式
    borderStyle.HorizontalAlignment = true; //启用水平对齐样式
    borderStyle.Font = false;//不使用配置的字体样式
    range1.ApplyStyle(GridStyle, borderStyle); //应用多种样式。borders设置:由于LeftBorder设置CellBorderType.Thin,范围是单行多列多单元格的,所以每个单元格左边框被设置两次,按最粗的样式显示,第一个单元格左框是Thin,其他列的单元格左框是Medium。

使用Aspose.Cell.dll导出Excel总结的更多相关文章

  1. Aspose.Cells 导入导出EXCEL(转)

    Aspose.Cells 导入导出EXCEL      修改样式        Workbook workbook = new Workbook(); //工作簿          Worksheet ...

  2. [转]Excel.dll 导出Excel控制

    Excel.dll 导出Excel控制 2010-06-12 11:26 2932人阅读 评论(2) 收藏 举报 excelmicrosoftstring产品服务器google 最近做了个导出Exce ...

  3. C# WinForm使用Aspose.Cells.dll 导出导入Excel/Doc 完整实例教程

    1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 Aspose C# 导出Excel 实例”一文中的 ...

  4. 使用aspose.cell动态导出多表头 EXCEL

    效果图: 前台调用: using System; using System.Collections.Generic; using System.Linq; using System.Web; usin ...

  5. NPOI、MyXls、Aspose.Cells 导入导出Excel(转)

    Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导s出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你 ...

  6. 根据路径获得文件名以及Aspose.Cells.dll操作excel 以及使用iTextSharp.text.pdf.PdfReader.dll对PDF的操作

    string result = Regex.Match(str,@"[^\\]+$").Value;//正则表达式 this.listBox1.Items.Add(Path.Get ...

  7. Aspose.cell.dll的使用,导excel表

    using System; using System.Web; using EF; using Newtonsoft.Json; using System.Collections.Generic; u ...

  8. Aspose.cell中的Excel模板导出数据

    //Excel模板导数据(Eexcel中根据DataTable中的个数,给多个Sheet中的模板赋值) public void DataSetToManyExcel(string fileName, ...

  9. Aspose.cell C# 操作excel(通过批注信息给单元格赋值、批注信息获取公式得出结果并转PNG)

    if (fileName == "") return ""; var CurrentRow = 0; Workbook work = new Workbook( ...

随机推荐

  1. Fraction to Recurring Decimal

    Given two integers representing the numerator and denominator of a fraction, return the fraction in ...

  2. wx.ListCtrl简单使用例子

    效果图: 示例代码: #! /usr/bin/env python #coding=utf-8 import wx import sys packages = [('jessica alba', 'p ...

  3. 开发简单的Kafka应用

    之前基于集群和单机安装过kafka,现在利用kafka提供的API构建一个简单的生产者消费者的项目示例,来跑通kafka的流程,具体过程如下: 首先使用eclipse for javaee建立一个ma ...

  4. 使用iScroll时,input等不能输入内容的解决方法(share)

    最近做移动平台的应用,使用iscroll使屏幕上下滑动.发现当使用iscroll后,input等不能输入内容了.只要在iscroll.js文件中加入如下代码就ok了. function allowFo ...

  5. nohup后台运行jar

    nohup 用途:LINUX命令用法,不挂断地运行命令.  语法:nohup Command [ Arg ... ] [ & ]  描述:nohup 命令运行由 Command 参数和任何相关 ...

  6. 【leetcode】Edit Distance (hard)

    Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2 ...

  7. 如何查看设备的 UDID

    手机连接上电脑,打开 Xcode,确认手机已连上: command+shift+2,就可以查看到 UDID 了:

  8. win7画板橡皮擦改变大小

    按住CTRL键不放,再按小键盘上的“+”号键,可以将橡皮擦放大

  9. python基础——调试

    python基础——调试 程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是 ...

  10. Mysql 删除语句

    手册: 14.2.2 DELETE Syntax 单表删除语句:DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [PARTITION (par ...