使用Aspose.Cell.dll导出Excel总结
这两天项目上用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总结的更多相关文章
- Aspose.Cells 导入导出EXCEL(转)
Aspose.Cells 导入导出EXCEL 修改样式 Workbook workbook = new Workbook(); //工作簿 Worksheet ...
- [转]Excel.dll 导出Excel控制
Excel.dll 导出Excel控制 2010-06-12 11:26 2932人阅读 评论(2) 收藏 举报 excelmicrosoftstring产品服务器google 最近做了个导出Exce ...
- C# WinForm使用Aspose.Cells.dll 导出导入Excel/Doc 完整实例教程
1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 Aspose C# 导出Excel 实例”一文中的 ...
- 使用aspose.cell动态导出多表头 EXCEL
效果图: 前台调用: using System; using System.Collections.Generic; using System.Linq; using System.Web; usin ...
- NPOI、MyXls、Aspose.Cells 导入导出Excel(转)
Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导s出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你 ...
- 根据路径获得文件名以及Aspose.Cells.dll操作excel 以及使用iTextSharp.text.pdf.PdfReader.dll对PDF的操作
string result = Regex.Match(str,@"[^\\]+$").Value;//正则表达式 this.listBox1.Items.Add(Path.Get ...
- Aspose.cell.dll的使用,导excel表
using System; using System.Web; using EF; using Newtonsoft.Json; using System.Collections.Generic; u ...
- Aspose.cell中的Excel模板导出数据
//Excel模板导数据(Eexcel中根据DataTable中的个数,给多个Sheet中的模板赋值) public void DataSetToManyExcel(string fileName, ...
- Aspose.cell C# 操作excel(通过批注信息给单元格赋值、批注信息获取公式得出结果并转PNG)
if (fileName == "") return ""; var CurrentRow = 0; Workbook work = new Workbook( ...
随机推荐
- Pywinauto在Windows Twain Driver自动化测试中的应用研究
摘 要: 以Python为基础,结合对Twain Driver测试工具的具体需求,将Pywinauto引入到Twain Driver的自动化测试中.介绍了Pywinauto的基本概念,通过测试用例说 ...
- java入门第一季2
1. 变量:在java中,我们通过三个元素描述变量:变量类型,变量名以及变量值 注意:java中的标点符号都是英文的 2. 变量名= 首字母+其余部分 字母,+ 字母 下划线, 数字 $ ...
- K3中添加的一条新数据,其在数据库中的位置
最近研究将K3系统与生产管理系统结合起来,减少工作量,但如何确定其各自后台数据库的构成,其对应数据各自位于那张表内,总结了一下: 1.从百度搜索,查看表结构,然后找到目标表 另:K3数据库中单独 ...
- SuperIndicator 专做轮播图库,没有之一,支持轮播图无限循环
github地址:https://github.com/hejunlin2013/SuperIndicator SuperIndicator a superindicatorlibray for vi ...
- 【leetcode】Compare Version Numbers(middle)
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
- 中等难度SQL语句(存储过程,分页,拼接字段、游标,日期类型转换,动态行转列,视图)汇总
一.创建存储过程 if Exists(select name from sysobjects where NAME = 'sp1LoginUser' and type='P')drop procedu ...
- ios wax热更新之安装wax(xcode7.3.1)
通过Finder浏览到你保存该项目的文件夹.创建三个新的文件夹:wax.scripts和Classes. 第一:首先,下载源代码的压缩包.Wax放在GitHub上(https://github.com ...
- Gson 解析列表
JsonArray jsonArray = new JsonParser().parse(resp).getAsJsonObject().getAsJsonArray("list" ...
- nyoj1007(euler 函数)
euler(x)公式能计算小于等于x的并且和x互质的数的个数: 我们再看一下如何求小于等于n的和n互质的数的和, 我们用sum(n)表示: 若gcd(x, a)=1,则有gcd(x, x-a)=1: ...
- Quartus 11.0 的AS 下载方式和JTAG下载jic文件的方式
FPGA下载的三种方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式: AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EP ...