1、使用Aspose.Cell生成Excel文件,Aspose.Cell是.NET组件控件,不依赖COM组件

  1首先一点需要使用新建好的空Excel文件做模板,否则容易产生一个多出的警告Sheet

1 Workbook workBookTemp = ExcelHelper.LoadTemplateFile(HttpContext.Current.Server.MapPath("~/../xxx.xlsx"));
2 Workbook workBook = new Workbook();
3 workBook.Copy(workBookTemp);
ExcelHelper.LoadTemplateFile实现的就是
Workbook workBookTemp = new Workbook(HttpContext.Current.Server.MapPath("~/..."))

  

2、给Excel每一行添加样式,两种标题样式,小标题样式类似。

  

Aspose.Cells.Style styleTitle = StyleTitle(workBook,TextAlignmentType.Center);
Aspose.Cells.Style styleSmallTitle = StyleSmallTitle(workBook,TextAlignmentType.Center);
//这里把两种样式封装了方法
private Aspose.Cells.Style StyleTitle(Workbook book, TextAlignmentType tape)
{
Aspose.Cells.Style styleTitle = book.Styles[book.Styles.Add()];//新增样式
styleTitle.HorizontalAlignment = tape;//文字居中
styleTitle.VerticalAlignment = tape;
styleTitle.ForegroundColor = System.Drawing.Color.Silver;
styleTitle.IsTextWarpped = true;
styleTitle.Pattern = BackgroundType.Solid;
styleTitle.IsLocked = true;
styleTitle.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;//左边界线
styleTitle.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
styleTitle.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
styleTitle.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
styleTitle.Font.Name = "微软雅黑";
styleTitle.Font.Size = 10;
styleTitle.Font.IsBold = true;
return styleTitle;
}

  3 Aspose.Cells会自动有一个Sheet表单,因此可以直接使用,list是需要导入到表的数据。

workBook.Worksheets[0].Name = "预警报表";
Worksheet sheet = workBook.Worksheets[0];
sheet.AutoFitRows();
EarlyExcel(sheet,list,styleTitle,styleSmallTitle);

  4如果需要多个Sheet表单,就需要循环创建sheet;

int index = 0;
foreach( var item in DataList)
{
index++;
Worksheet sheet = workBook.Worksheets[index];
....
}

  5创建表头,并添加单元格样式

private void EarlyExcel(Worksheet sheet, List<Model> list, Aspose.Cells.Style styleTitle, Aspose.Cells.Style styleSmallTitle )
{
Cells cells = sheet.Cells;
cells[0,0].PutValue("name1");
cells[0,1].PutValue("name2");
.....
//设置列宽,可以提出来一个方法
int columnCount = cells.MaxColumn;
int rowCount = cells.MaxRow;
for(int col = 0; col < columnCount; col++)
{
sheet.AutoFitColumn(col,0,rowCount);
}
for(int col = 0; col < columnCount; col++)
{
if(col == 2)
cells.SetColumnWidth(2,50);
else if(col>=0 && col <= 5 && col !=2)
cells.SetColumnWidthPixel(col,cells.GetColumnWidthPixel(col) + 60);
else
cells.SetColumnWidthPixel(col,cells.GetColumnWidthPixel(col) + 30);
}
//插入值
for(int i = 0; i < list.Count; i ++)
{
cells[i+1,0].PutValue(list[i].Name1);
cells[i+1,2].PutValue(list[i].Name2);
......
       //写入公式的方法
       cells[i+1,3].Formula = "SUM(A1:B1)";
       cells[i+1,4].Formula = "=AVERAGE(B1:E1)";
}
//使用写好的样式
for(int j = 0;j < sheet.Cells.MaxDataColumn + 1;j++)
{
cells[i+1,j].SetStyle(styleSmallTitle);
cells.SetRowHeight(i + 1,17);
}
}

  6到这里Excel表单创建完毕,因为我导出的Excel中需要插入图片。下面列出插入图片的方法。

//创建的图片
int pictureIndex = sheet.Pictures.Add(rownum,columnnum,Server.MapPath("~/Images/xxx.png"));
setPictureSize(sheet,pictureIndex); private void setPictureSize(Worksheet sheet,int index)
{
//使用图片
Aspose.Cells.Drawing.Picture picture = sheet.Pictures[index];
//调图片位置和宽高
picture.UpperDeltaX = 400;
picture.UpperDeltaY = 0;
picture.Hieght = 17;
picture.Width = 17;
}

  7写入到流

System.IO.MemoryStream fileStream = SaveToStream(workBook);

public static System.IO.MemoryStream SaveToStream(Workbook workbook)
{
  
//刷新全部公式单元格--当生成的单元格,在修改单元格数据时,需要动态计算取得值的时候使用
workbook.CalculateFormula(true); //输出到数据流
System.IO.MemoryStream stream = new System.IO.MemoryStream();
workbook.Save(stream,SaveFormat.Excel97To2003); return stream;
}

  8输出Excel

SaveToExcel("预警报表",fileStream,DateTime.Now.ToString(),HttpContext.Current);

public void SaveToExcel(string fileName , System.IO.MemoryStream fileStream,string time, HttpContext context)
{
context.Response.Clear();
context.Response.AppendHeader("Content-Disposition",("attachment;filename="+HttpUtility.UrlEncode(fileName.ToString() + "-" + DateTime.Parse(time).ToString("yyyyMMdd") + ".xls")+""));
context.Response.ContentType = "application/octet-stream";
context.Response.ContentEncoding = System.Text.Encoding.UTF7;
context.Response.Charset = "gb2312";
context.Response.BinaryWrite(fileStream.ToArray());
context.Response.End();
}

NPOI在下篇写

  

Aspose.Cell和NPOI生成Excel文件的更多相关文章

  1. Aspose.Cell和NPOI生成Excel文件2

    NPOI还是比较好用的,引用dll程序集即可 1创建workbook和工作流 HSSFWorkbook workbook = new HSSFWorkbook(); MemoryStream ms = ...

  2. .net利用NPOI生成excel文件

    整理代码,这个是生成excel文件,用的是HSSF的方式,只能生成65535行,256列的数据,如果要看office07之后的生成,之前的随笔里提过.这个是一个完整的过程. 首先是已经查找好的数据,这 ...

  3. asp.net mvc NPOI 生成Excel文件

    private string PushToDown(string addtime) { DataTable dt = _bCreateCode.PushtoExcel(addtime); //1.实例 ...

  4. 使用NPOI导出Excel文件

    使用NPOI导出Excel文件,本实例使用了ASP.NET MVC. 1.使用NPOI导出Excel文件 实例:导出商品列表. 要求:1.通过NPOI导出导出商品列表信息: 2.使用Excel函数计算 ...

  5. 使用Aspose.Cell控件实现Excel高难度报表的生成(三)

    在之前几篇文章中,介绍了关于Apsose.cell这个强大的Excel操作控件的使用,相关文章如下: 使用Aspose.Cell控件实现Excel高难度报表的生成(一) 使用Aspose.Cell控件 ...

  6. 使用Aspose.Cell控件实现Excel高难度报表的生成(一)

    时光飞逝,生活.工作.业余研究总是在不停忙碌着,转眼快到月底,该月的博客文章任务未完,停顿回忆一下,总结一些经验以及好的东西出来,大家一起分享一下.本文章主要介绍报表的生成,基于Aspose.Cell ...

  7. (转)使用Aspose.Cell控件实现Excel高难度报表的生成(一)

    本文章主要介绍报表的生成,基于Aspose.Cell控件的报表生成.谈到报表,估计大家都有所领悟以及个人的理解,总的来说,一般的报表生成,基本上是基于以下几种方式:一种是基于微软Excel内置的引擎来 ...

  8. 使用Aspose.Cell控件实现Excel高难度报表的生成(二)

    继续在上篇<使用Aspose.Cell控件实现Excel高难度报表的生成(一)>随笔基础上,研究探讨基于模板的Aspose.cell报表实现,其中提到了下面两种报表的界面,如下所示: 或者 ...

  9. 使用Aspose.Cell控件实现Excel高难度报表的生成

    1.使用Aspose.Cell控件实现Excel高难度报表的生成(一) http://www.cnblogs.com/wuhuacong/archive/2011/02/23/1962147.html ...

随机推荐

  1. 二叉搜索树TREE(线段树,区间DP)

    前言 线段树+区间DP题,线段树却不是优化DP的,是不是很意外? 题面 二叉搜索树是一种二叉树,每个节点都有一个权值,并且一个点的权值比其左子树里的点权值都大,比起右子树里的点权值都小. 一种朴素的向 ...

  2. 【MySQL】从入门到掌握3-WorkBench

    上期:[MySQL]从入门到掌握2-下载安装 我们安装完MySQL Server的时候,是没有任何界面的. 不过很好,我们有一个工具,MySQL Workbench,他可以简化我们的操作,有点像Jav ...

  3. HMS Core基于地理位置请求广告,流量变现快人一步

    对于想买车的用户来说,如果走在路上刷社交软件时突然在App里收到一条广告:"前方500米商圈里的某品牌汽车正在做优惠,力度大福利多."不管买不买,八成都会去看看,原因有三:距离近. ...

  4. VM虚拟机安装和使用

    作者:菘蓝 时间:2022/8/30 ================================================================================= ...

  5. 配置Windows server dhcp与AD域对接并使用Win1创的用户登录Win2

    创建两台windows_server_2012 创建步骤链接(https://www.cnblogs.com/zhengyan6/p/16338084.html) 注意:所有虚拟机都要在同意网段 配置 ...

  6. MySQL数据库如何线上修改表结构

    一.MDL元数据锁 在修改表结构之前,先来看下可能存在的问题. 1.什么是MDL锁 MySQL有一个把锁,叫做MDL元数据锁,当对表修改的时候,会自动给表加上这把锁,也就是不需要自己显式使用. 当对表 ...

  7. ar9485 win10 笔记本电脑 无线网间歇性掉线

    问题  新安装了系统,刚开始上网正常,下载东西或者待机一段时间后掉线了. wifi都能搜到,就是连不上,重启电脑可以解决,但是每次重启很麻烦,必须找到治本的方法. 排除问题 1.手机连接没有问题,排除 ...

  8. 高阶 CSS 技巧在复杂动效中的应用

    最近我在 CodePen 上看到了这样一个有意思的动画: 整个动画效果是在一个标签内,借助了 SVG PATH 实现.其核心在于对渐变(Gradient)的究极利用. 完整的代码你可以看看这里 -- ...

  9. Sublime Text简单使用方法

    一.新建和保存文件 一.点击文件,选择新建文件或者快捷键Ctrl+N 二.另存文件,选择保存位置,这里项目的命名以.py为后缀 二.保存代码 快捷键Ctrl+S,上方文字出现小圆点表示未保存 三.运行 ...

  10. sklearn中MLPClassifier源码解析

    神经网络 .fit() 首先传入类私用方法._fit() 确定hidden_layer_size是可迭代的 调用_validate_hyperparameters验证超参数是否合法 验证输入的x和y是 ...