利用Aspose.Cells导出Datatable数据
面对一些的格式各样的到处数据的要求,自学了一点 Aspose.Cells中操作Excel知识,如下代码:
/// <summary>
/// DataTable导出Excel
/// </summary>
/// <param name="page">当前页面</param>
/// <param name="my_dt">DataTable</param>
/// <param name="fileName">文件名</param>
/// <param name="title">输入的抬头</param>
public static void ExportExcel(Page page, DataTable my_dt, string fileName, string title = "")
{
Workbook my_wb = new Workbook();
Worksheet sheet = my_wb.Worksheets[];
//title的样式
Aspose.Cells.Style t_style = my_wb.Styles[my_wb.Styles.Add()];
t_style.HorizontalAlignment = TextAlignmentType.Center;//居中
t_style.Font.IsBold = true;
t_style.Font.Name = "宋体";
t_style.Font.Size = ;
t_style.Borders.SetStyle(CellBorderType.Thin);//边框样式
t_style.Borders.DiagonalStyle = CellBorderType.None;
//设置单元格背景色
t_style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0);
t_style.Pattern = BackgroundType.Solid;
//header 样式
Aspose.Cells.Style h_style = my_wb.Styles[my_wb.Styles.Add()];
h_style.HorizontalAlignment = TextAlignmentType.Center;//居中
h_style.Font.IsBold = true;
h_style.Font.Name = "宋体";
h_style.Font.Size = ;
h_style.Borders.SetStyle(CellBorderType.Thin);//边框样式
h_style.Borders.DiagonalStyle = CellBorderType.None;//花纹
h_style.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
//Row样式
Aspose.Cells.Style r_style = my_wb.Styles[my_wb.Styles.Add()];
r_style.HorizontalAlignment = TextAlignmentType.Center;//居中
r_style.Font.IsBold = false;
r_style.Font.Name = "宋体";
r_style.Font.Size = ;
r_style.Borders.SetStyle(CellBorderType.Thin);//边框样式
r_style.Borders.DiagonalStyle = CellBorderType.None;
int tempRow = ;
if (title != "")
{
//标题的写入
sheet.Cells.Merge(, , , my_dt.Columns.Count);//单元格从第几行第几列跨不跨行
Range range = sheet.Cells.CreateRange(, , , my_dt.Columns.Count);//所在区域
Cell Cell = sheet.Cells[, ];//一个单元格
Cell.PutValue(title);
range.Style = t_style;
tempRow++;
} //列的输入
for (var i = ; i < my_dt.Columns.Count; i++)
{
sheet.Cells.Merge(tempRow, i, , );//单元格从第几行第几列跨不跨行
Cell m_Cell = sheet.Cells[tempRow, i];//一小格
m_Cell.PutValue(my_dt.Columns[i].ColumnName);
m_Cell.SetStyle(h_style);
}
tempRow++;
//行的输出
for (var i = ; i < my_dt.Columns.Count; i++)
{
for (var j = ; j < my_dt.Rows.Count; j++)
{
sheet.Cells[j + tempRow, i].PutValue(my_dt.Rows[j][i]);
sheet.Cells[j + tempRow, i].SetStyle(r_style);
}
}
sheet.Cells.SetRowHeight(, );//设置行高
//sheet.Cells.SetColumnWidth(1, 20);//设置列宽
sheet.AutoFitColumns(); //列宽自动匹配,当列宽过长是收缩 fileName = System.Web.HttpUtility.UrlEncode(fileName + ".xls", System.Text.Encoding.UTF8);//文件名编码 my_wb.Save(fileName, FileFormatType.Excel2003, SaveType.OpenInExcel, page.Response);
page.Response.End(); }
利用Aspose.Cells导出Datatable数据的更多相关文章
- 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称
说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...
- Aspose.Cells导出Excel(1)
利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...
- 利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能
我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据, ...
- 利用Aspose.cells 将查询出的数据导出为excel,并在浏览器中下载。
正题前的唠叨 本人是才出来工作不久的小白菜一颗,技术很一般,总是会有遇到一些很简单的问题却不知道怎么做,这些问题可能是之前解决过的.发现这个问题,想着提升一下自己的技术水平,将一些学的新的‘好’东西记 ...
- 在ASP.NET MVC中利用Aspose.cells 将查询出的数据导出为excel,并在浏览器中下载。
正题前的唠叨 本人是才出来工作不久的小白菜一颗,技术很一般,总是会有遇到一些很简单的问题却不知道怎么做,这些问题可能是之前解决过的.发现这个问题,想着提升一下自己的技术水平,将一些学的新的'好'东西记 ...
- .net mvc 使用 aspose.cells导出数据
public class AsposeCellsHelper { public Workbook workBook; public Worksheet worksheet; Style style; ...
- 【转】 (C#)利用Aspose.Cells组件导入导出excel文件
Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...
- (C#)利用Aspose.Cells组件导入导出excel文件
Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...
- C#使用Aspose.Cells导出Excel简单实现
首先,需要添加引用Aspose.Cells.dll,官网下载地址:http://downloads.aspose.com/cells/net 将DataTable导出Xlsx格式的文件下载(网页输出) ...
随机推荐
- 【sqli-labs】 less13 POST - Double Injection - Single quotes- String -twist (POST型单引号变形双注入)
报错 闭合掉括号 这关登录成功之后不显示登录的用户名密码了
- <转>c++引用与指针的区别(着重理解)
★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使用时无需解引用(*),指 ...
- ffmpeg中关于EAGAIN的理解及非阻塞IO
ffmpeg为在linux下开发的开源音视频框架,所以经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中). try again,从字面上来看,是提 ...
- vue小白学习笔记
<div id="div"> <h2>{{ key }}</h2> </div> new Vue ({ el : "#di ...
- PAT_A1034#Head of a Gang
Source: PAT A1034 Head of a Gang (30 分) Description: One way that the police finds the head of a gan ...
- Mysql [Err] 1118 - Row size too large
首先声明,对MySQL不懂,很多都不知道原因 设计了一个表,里面很多text字段,然后填进去的东西太多(用的是Python的MySQLdb),报错: _mysql_exceptions.Operati ...
- RBM(受限玻尔兹曼机)和深层信念网络(Deep Brief Network)
目录: 一.RBM 二.Deep Brief Network 三.Deep Autoencoder 一.RBM 1.定义[无监督学习] RBM记住三个要诀:1)两层结构图,可视层和隐藏层:[没输出层] ...
- 【剑指Offer】31、从1到n整数中1出现的次数
题目描述: 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他 ...
- 01 c++常见面试题总结
https://www.cnblogs.com/yjd_hycf_space/p/7495640.html C++常见的面试题 http://c.tedu.cn/workplace/217749. ...
- 结构体、枚举、联合(day14)
一个存储区的地址必须是它自身大小的整数倍 (double类型存储区的地址只需要是4的 整数倍) 这个规则叫数据对齐 结构体里面的子存储区通常也需要遵守数据 对齐的规则 数据对齐会造成结构体内部子存储区 ...