网站首页 > 技术文章 正文
1、创建asp.net mvc 项目
2、选择引用,右键选择管理NuGet程序包
选择管理NuGet程序包
3、输入Aspose.Cells搜索,选择红框的这个添加
选择Aspose.Cells
4、添加引用 using Aspose.Cells; 和using System.Data;
5、 导入excel到数据库
数据库对应的字段:
前端页面
view的页面
Improve_ExcelController 控制器
6、将数据显示和筛选出来
这里用到了PageList 分页,步骤是在引用右键,选择NuGet ,搜索PagedList.Mvc,然后引入using PagedList;
控制器 DataRefshController
//条件筛选查询显示
这里用到了将datatble 转换为list
view 前端页面
查询之后,单击导出excel
//导出到excel
这里创建了一个AsposeCellsHelper类
导入比使用office 的插件简单易懂,只需要设置数据库对应的表和连接数据库即可,
导出的时候也很简单,封装了一个类
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);
//将表头是表字段更改成我们想要的汉字
switch (dc.ColumnName)
{
case "ids":
dc.ColumnName = "ID";
break;
case "users":
dc.ColumnName = "用户";
break;
case "area":
dc.ColumnName = "区域";
break;
case "school":
dc.ColumnName = "学校";
break;
case "classes":
dc.ColumnName = "班级";
break;
case "name":
dc.ColumnName = "姓名";
break;
case "phone":
dc.ColumnName = "电话";
break;
case "integration":
dc.ColumnName = "积分";
break;
case "states":
dc.ColumnName = "状态";
break;
case "createDate":
dc.ColumnName = "创建时间";
break;
case "refreshDate":
dc.ColumnName = "更新时间";
break;
}
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, Aspose.Cells.ContentDisposition.Attachment, new OoxmlSaveOptions());
Response.End();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
//可以不写dispose
worksheet.Dispose();
workBook.Dispose();
}
}
}
ok!需要全部代码的,需要源码的找我哦!
谁用谁知道,比office的插件好用多了,记得收藏和点赞哦!
猜你喜欢
- 2025-09-11 如何将 JSON 文件转换Excel,做为高手的你一定要会哦!
- 2025-09-11 Vue中mixin怎么理解?_vue.mixin是什么
- 2025-09-11 入口开始解读Vue源码系列(二)——new Vue 的故事
- 2025-09-11 【干货】EasyExcel确实好用,Springboot+EasyExcel实操
- 2025-09-11 EXCEL导入—设计与思考_导入设计要考虑哪些因素
- 2025-09-11 条码记录系统 6.0——Excel+Access
- 2025-09-11 系统开发内嵌“在线Excel”教程(1) -- 设计器
- 2025-09-11 Access 与 Excel 的区别:别再把 Excel 当数据库用
- 2024-12-08 公司大佬对excel导入、导出的封装,那叫一个秒啊
- 2024-12-08 如何将 “在线Excel” 嵌入你的开发系统中?
你 发表评论:
欢迎- 最近发表
-
- 用AI做微信小程序的完整步骤_如何用ai制作微信表情包
- 自习室预约的微信小程序设计与实现-计算机毕业设计源码+LW文档
- 微信小程序开发入门指南_微信小程序开发入门教程
- 写字机器人好用吗? 组装就花了5个小时 还要学习软件、录入字体
- 白描网页版 - 高效准确且免费的OCR文字识别工具
- 字体图形面板与图标字体使用_字体图标的优势和劣势
- 作为前端工程师必须懂得的33个CSS核心概念
- Flutter程序员开发炫酷的登录页面 字体库运用 路由学习 源码分享
- 2025Q3开源字体盘点:让你的代码和文档'颜值'飙升!
- Agent杂谈:Agent的能力上下限及「Agent构建」核心技术栈调研分享~
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)