这两天项目上用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. ios 在程序中使用iCloud

    注意,这里说的使用icould不是用icloud进行系统备份,那个功能不需要我们写代码,备份到icloud的东西我们也不能操作.我们指的是以下这3种icloud使用方法: 这里有3中使用方法, Key ...

  2. Windows下安装Scala

    Scala是一种类似Java的纯面向对象的函数式编程语言,由于函数具有明确的确定输入对确定输出的关系,所以适合推理和计算,一切函数都可以看成一系列的计算组成,另外由于Scala函数是没有副作用和透明的 ...

  3. Kafka单机环境部署

    前面说过Kafka集群环境的部署,现在主要说一下在本地测试中Kafka单机环境的部署,和前面一样首先保证zookeeper服务的正常运行,然后解压并释放kafka安装包,并放到指定位置: tar -x ...

  4. vps mysql自动关闭

    买了个阿里云的vps 装了一个wordpress,mysql一直自动关闭,百思不得其解,只有搜索 最后才发现是因为服务器内存太小,毕竟是最便宜的才512m ---------------------- ...

  5. Effective C++ -----条款09:绝不在构造和析构过程中调用virtual函数

    在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class(比起当前执行构造函数和析构函数的那层).

  6. H5 前端页面适配响应式

    辞职有半个月了,面试了几家公司,还在挣扎中.... 不废话,H5页面适配成响应式,可以用百分比或者rem. rem是相对于html根元素的单位,可以根据根元素的大小做出等比缩放, 通常,假如设置,ht ...

  7. 复习sqldataread

    public static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader) { ///定义DataTable Data ...

  8. 100个Github上Android开源库

    项目名称 项目简介 1. react-native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native, ...

  9. Android 支付宝以及微信支付快速接入流程

    简介 随着移动支付的普及,越来越多的App采用第三发支付,在这里我们以支付宝为例,做一个快速集成! 一.Android快速实现支付宝支付 1.首先,我们需要前往支付宝开放平台,申请我们的支付功能:ht ...

  10. September 12th 2016 Week 38th Monday

    After all, tomorrow is another day. 不管怎样,明天又是全新的一天. Another day? Maybe.  Remember when you reach for ...