public class AsposeCellsHelper
{
public Workbook workBook;
public Worksheet worksheet;
Style style; /// <summary>
/// 构造函数,不设置工作表名称
/// </summary>
public AsposeCellsHelper()
{
workBook = new Workbook();
worksheet = workBook.Worksheets[0];
} /// <summary>
/// 构造函数,设置工作表名称
/// </summary>
public AsposeCellsHelper(string name)
{
workBook = new Workbook(); if (string.IsNullOrEmpty(name))
{
name = DateTime.Now.ToString("yyyyMMddHHmmssffff");
} if (workBook.Worksheets.Count > 0)
{
worksheet = workBook.Worksheets[0];
worksheet.Name = name;
}
else
{
worksheet = workBook.Worksheets.Add(name);
}
} /// <summary>
/// 创建工作表,并将对象切换为当前创建的工作表
/// </summary>
/// <param name="name"></param>
public void CreateSheet(string name)
{
if (string.IsNullOrEmpty(name))
{
name = DateTime.Now.ToString("yyyyMMddHHmmssffff");
} worksheet = workBook.Worksheets.Add(name);
} //设置单元格样式
public void SetCellStyle(int fontSize, bool IsBold)
{
if (style == null)
{
style = workBook.DefaultStyle;
} //style.BackgroundColor = backgroundColor;
style.Font.Name = "宋体";//文字字体
style.Font.Size = fontSize;//文字大小
//前景色
style.ForegroundColor = Color.White;
style.Font.IsBold = IsBold;//粗体
style.HorizontalAlignment = TextAlignmentType.Center;//文字居中
//线条样式
style.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
//线条颜色
style.Borders[BorderType.TopBorder].Color = Color.Black;
style.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
style.Borders[BorderType.BottomBorder].Color = Color.Black;
style.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
style.Borders[BorderType.LeftBorder].Color = Color.Black;
style.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
style.Borders[BorderType.RightBorder].Color = Color.Black;
} //设置值
public void SetValue(int x, int y, string value,int rowHeight = 20)
{
//设置值
worksheet.Cells[x, y].PutValue(value, false);
//设置样式
worksheet.Cells[x,y].SetStyle(style);
//设置行高
worksheet.Cells.SetRowHeight(x, rowHeight);
} /// <summary>
/// 填充数据到excel,数据填充可自行添加或继承后扩展方法
/// </summary>
/// <param name="dt"></param>
public void SetDataByTable(DataTable dt,string title)
{
DataColumnCollection columns = dt.Columns; int addIndex = 0; //表格标题
if (!string.IsNullOrEmpty(title))
{
addIndex = 1;
SetCellStyle(16, true);
worksheet.Cells.Merge(0, 0, 1, columns.Count);
SetValue(0, 0, title, 30);
} //表头
if (columns.Count > 0)
{
int columnIndex = 0; foreach (DataColumn dc in columns)
{
SetCellStyle(14, true);
SetValue(0 + addIndex, columnIndex, dc.ColumnName, 25);
columnIndex += 1;
}
} //数据
if (dt.Rows.Count > 0)
{
int rowIndex = 1 + addIndex; foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < columns.Count; i++)
{
SetCellStyle(12, false);
SetValue(rowIndex, i, dr[i].ToString());
} rowIndex += 1;
}
} worksheet.AutoFitColumns();
} /// <summary>
/// 导出excel
/// </summary>
/// <param name="name"></param>
public void ExportExcel(string name)
{
try
{
HttpResponse Response = System.Web.HttpContext.Current.Response; if (Response != null)
{
if (string.IsNullOrEmpty(name))
{
name = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx";
} // Save in Xlsx format
workBook.Save(Response, name, ContentDisposition.Attachment, new OoxmlSaveOptions());
Response.End();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
//可以不写dispose
worksheet.Dispose();
workBook.Dispose();
}
}
}

  

调用代码

public void Export()
{
AsposeCellsHelper aspose = new AsposeCellsHelper("测试导出"); DataTable dt = new DataTable("cart");
DataColumn dc3 = new DataColumn("number", Type.GetType("System.Int16"));
DataColumn dc1 = new DataColumn("prizename", Type.GetType("System.String"));
DataColumn dc2 = new DataColumn("point", Type.GetType("System.Int16"));
DataColumn dc4 = new DataColumn("totalpoint", Type.GetType("System.Int64"));
DataColumn dc5 = new DataColumn("prizeid", Type.GetType("System.String"));
dt.Columns.Add(dc3);
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc4);
dt.Columns.Add(dc5);
//以上代码完成了DataTable的构架,但是里面是没有任何数据的
for (int i = 0; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["prizename"] = "娃娃";
dr["point"] = 10;
dr["number"] = i;
dr["totalpoint"] = 10;
dr["prizeid"] = "001";
dt.Rows.Add(dr);
} //aspose.SetDataByTable(dt,string.Empty);
aspose.SetDataByTable(dt, "测试标题");//标题可以传空,可以修改为重载,或者修改SetDataByTable方法的最后一个参数,将其加上默认值,重载的一个变种
aspose.ExportExcel("测试.xlsx");//名称可以传空
}

  

.net mvc 使用 aspose.cells导出数据的更多相关文章

  1. asp.net mvc用aspose.cells 导出xlsx格式的excel。无残留

    public void Export() { HttpResponse Response = System.Web.HttpContext.Current.Response; // Load your ...

  2. Aspose.Cells导出Excel(1)

    利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...

  3. 基于C#语言MVC框架Aspose.Cells控件导出Excel表数据

    控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726 @{ ViewBag.Title = "xx" ...

  4. 利用Aspose.Cells导出Datatable数据

    面对一些的格式各样的到处数据的要求,自学了一点 Aspose.Cells中操作Excel知识,如下代码: /// <summary> /// DataTable导出Excel /// &l ...

  5. C# 基于Aspose.Cells的数据导出到Excel

    using Aspose.Cells;  void WriteToExcel(string filePath, List<object[]> datas, string sheetName ...

  6. C#使用Aspose.Cells导出Excel简单实现

    首先,需要添加引用Aspose.Cells.dll,官网下载地址:http://downloads.aspose.com/cells/net 将DataTable导出Xlsx格式的文件下载(网页输出) ...

  7. C#+Aspose.Cells 导出Excel及设置样式 (Webform/Winform)

    在项目中用到,特此记录下来,Aspose.Cells 不依赖机器装没有装EXCEL都可以导出,很方便.具体可以参考其他 http://www.aspose.com/docs/display/cells ...

  8. aspose.cells导出Demo

    /// <summary> /// 导出excel /// </summary> /// <param name="list"></par ...

  9. C# 使用Aspose.Cells 导出Excel

    今天在工作中碰到同事用了一种新型的方式导入excel,在此做个学习记录. 插件:Aspose.Cells 第一步:准备好导出的模板,例子: C#代码: #region 验证数据 if (model = ...

随机推荐

  1. Mysql:自动化备份

    简介 在这个数据为王的时代,数据的备份十分重要,这里就分享一篇mysql数据库自动备份的脚本(是从网上搜到的),其将配置文件和备份脚本分离,提高了安全性,脚本风格规范严谨,分享给大家希望对需要的小伙伴 ...

  2. 机器学习(ML)十四之凸优化

    优化与深度学习 优化与估计 尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同. 优化方法目标:训练集损失函数值 深度学习目标:测试集损失函数值(泛化性) ...

  3. 详解Java8的日期和时间API

    详解Java8的日期和时间API 在JDK1.0的时候,Java引入了java.util.Date来处理日期和时间:在JDK1.1的时候又引入了功能更强大的java.util.Calendar,但是C ...

  4. VFP日期时间转中文日期时间

    本函数原为VFP中取日期转中文日期方式,后增加日期时间处理,并改用Iif及ICase修改原代码.Function DateTime2CHNParameters pdDate,plTime*!* pdD ...

  5. jenkins 介绍 安装

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作, 旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins是可扩展的持续集成.交付.部 ...

  6. 如何使用Xcode调试Shader代码Bug导致的渲染问题

    我最近发现了一个与Unity中的表面着色器有关的小Bug. 你可以看到如下所示的渲染瑕疵. 有时人们会将相似的渲染瑕疵归因于同时使用HDR和Bloom效果,但实际上,表面着色器是错误的,至少在本文中所 ...

  7. Webpack之(progressive web application) - PWA中的 Service Workers 是什么

    学习文档:https://webpack.docschina.org/guides/progressive-web-application/ 参考文档:https://developers.googl ...

  8. Vue之Vuex的使用

    重点看懂这张图: 重点记住: 1.Mutation 必须是同步函数,即mutations里只能处理同步操作. 2.如果处理的是同步操作可直接commit提交mutations更改state,如果是异步 ...

  9. asp.net MVC项目开发之统计图echarts后台数据的处理(三)

    前台显示的东西,有相应的文档很容易修改,后台传递数据方式才是我们最关心的 首先要记住,我们一步数据使用的是post,那么后台代码我们要给方法加上 [HttpPost]注解 不然异步没有效果 下面上代码 ...

  10. Class Literal(Java)

    前言 上一节我们讨论过通过关键字synchronized实现线程同步,同时最主要了解到在Java中className.class所代表的具体含义,在博客写完后,感觉还是有点迷糊,然后再次深入了解后,原 ...