C# asp.net 导出数据库二进制字段到excel
前台的话不多说,本次只详细说下后台导出数据库中的二进制字段,上传下次有时间再说,有比较急的可以留言我
之前在网上搜了关于下载导出二进制字段的资料,发现都不是我想要的,都只是把上传的文件放到服务器然后下载这个文件,并不是把数据库中的二进制使用excel导出,下面我就贴出下我自己写的方法,可以供给需要的人,当然也有大牛可能比我写的好,您可以选择不看或提点下建议!
最后本文数原创,转载请注明出处或链接!
/// <summary>
/// 下载卡券导入日志
/// </summary>
/// <param name="e"></param>
private void EditBLL(DataGridCommandEventArgs e)
{
if (e.CommandName == "DownLoad")//e 前台绑定事件commandName
{
String sFileId = e.Item.Cells[0].Text.Trim();
VirtualCouponsManagebll bll = new VirtualCouponsManagebll();
DataTable dt = bll.GetCardcouponsFileLogToExcel(sFileId);//查询出数据
if (dt.Rows.Count <= 0)
{
MessageBox("查询卡券导入日志失败");
return;
}
string sGoodsName = dt.Rows[0]["GoodsName"].ToString();
string sCreateTime = Convert.ToDateTime(dt.Rows[0]["CreateDate"].ToString()).ToString("yyyyMMddHHmmss");
string sFileName = sGoodsName + sCreateTime + ".xlsx";
DataSet ds = StreamConvertDataSet((byte[])dt.Rows[0]["CardCouponsFile"], sFileName);
if (ds == null || ds.Tables[0].Rows.Count <= 0)
{
MessageBox("卡券数据由byte数组转DataSet失败");
return;
}
ExportTableStrBul(ds.Tables[0], "虚拟商品:" + sGoodsName + "_卡券导入数据", sCreateTime);
}
}
/// <summary>
/// byte数组转成DataSet
/// </summary>
/// <param name="bytes"></param>
/// <param name="sFileName"></param>
/// <returns></returns>
private DataSet StreamConvertDataSet(byte[] bytes, string sFileName)
{
MemoryStream _MStream = new MemoryStream(bytes);
string path = AppDomain.CurrentDomain.DynamicDirectory + sFileName;
System.IO.FileStream Filestream = new System.IO.FileStream(path, System.IO.FileMode.Create);
_MStream.CopyTo(Filestream);
IExcelDataReader excelReader = null;
DataSet ds = null;
try
{
excelReader = ExcelReaderFactory.CreateOpenXmlReader(Filestream);
excelReader.IsFirstRowAsColumnNames = true;
ds = excelReader.AsDataSet();
}
catch (Exception)
{
Filestream.Close();
_MStream.Close();
excelReader.Close();
}
finally
{
excelReader.Close();
Filestream.Close();
_MStream.Close();
if (File.Exists(path))
{
File.Delete(path);
}
}
return ds;
}
/// <summary>
/// 生成EXCEL
/// </summary>
/// <param name="dt">数据</param>
/// <param name="sFileName">文件名</param>
/// <param name="sCreateTime">文件名</param>
public void ExportTableStrBul(DataTable dt, string sFileName, string sCreateTime)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(sFileName) + sCreateTime + ".xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
EnableViewState = false;
DataView view = dt.DefaultView;
string[] strArr = { "卡券", "结束日期" };//"TotalRMB",
//从 DataView 创建新的 DataTable,可以使用 ToTable 方法将所有行和列或数据的一个子集复制到新的 DataTable 中
DataTable newTable = view.ToTable("DownTab",
true, strArr);
dt = newTable;
StringBuilder sb = new StringBuilder();
int count = 0;
//--写入EXCEL
sb.AppendLine("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">");
sb.AppendLine("<table cellspacing=\"0\" cellpadding=\"5\" rules=\"all\" border=\"1\">");
//写出列名
sb.AppendLine("<tr style=\"font-weight: bold; white-space: nowrap;\">");
foreach (DataColumn column in dt.Columns)
{
sb.AppendLine("<td>" + column.ColumnName + "</td>");
}
sb.AppendLine("</tr>");
sb = sb.Replace("卡券", "卡券");
sb = sb.Replace("结束日期", "结束日期");
//写出数据
foreach (DataRow row in dt.Rows)
{
sb.Append("<tr>");
foreach (DataColumn column in dt.Columns)
{
if (column.ColumnName.Equals("卡券"))
{
sb.Append("<td style=\"vnd.ms-excel.numberformat:@\">" + ReplaceChar(row[column].ToString()) + "</td>");
}
else
{
sb.Append("<td>" + row[column].ToString() + "</td>");
}
}
sb.AppendLine("</tr>");
count++;
}
sb.AppendLine("</table>");
Response.Write(sb.ToString());
Response.End();
}
C# asp.net 导出数据库二进制字段到excel的更多相关文章
- asp.net导出excel-一行代码实现excel、xml、pdf、word、html、csv等7种格式文件导出功能而且美观-SNF快速开发平台
分享: 腾讯微博 新浪微博 搜狐微博 网易微博 腾讯朋友 百度贴吧 豆瓣 QQ好友 人人网 作者:王春天 原文地址:http://www.cnblogs.com/spring_ ...
- ASP.NET MVC5--为数据库新增字段(涉及数据库迁移技术)
Setting up Code First Migrations for Model Changes--为模型更改做数据库迁移. 1.打开资源管理器,在App_Data文件夹下,找到movies.md ...
- 在sqlserver 中如何导出数据库表结构到excel表格中
先建空白excel--在数据库中的左侧找到该表, 选中需要导出的数据--Ctrl+C复制--打开记事本修改编码格式为Unicode-不自动换行保存--Ctrl+A--Ctrl+C,再打开excel-- ...
- Asp.Net导出文件名中文乱码
Asp.Net导出word为例,Excel等其他文件也一样 protected void Page_Load(object sender, EventArgs e) {string html = “网 ...
- .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转
.net mvc 站点自带简易SSL加密传输 因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...
- mysql导出部分(指定)数据库表字段
需要导出某个表中的部分字段信息 之前导出数据库表一直使用mysqldump命令,例如: mysqldump -hIP -uroot -P3306 -p 库 表 > 名字.sql 但是如果导出 ...
- POSTGRESQL 创建表结构、修改字段、导入导出数据库(支持CSV)
这两个月经常使用postgresql,总结一些经常使用的语句: --创建表 CREATE TABLE customers ( customerid SERIAL primary key , compa ...
- mysql导出数据库表名与字段信息
一.导出数据库表格信息 #mysql导出库的表格信息 SELECT A.TABLE_SCHEMA, A.TABLE_NAME, A.TABLE_ROWS, A.CREATE_TIME, A.TABLE ...
- eImage(仅两行代码实现输出从数据库中查询到的二进制字段)标签
功能: 专门用于向浏览器输出从数据库中查询到的二进制字段.支持通用的几十种文件类型 别名为edoc 使用方法: <chtml><eimage id=书包名type=类型>key ...
随机推荐
- Oracle两种临时表的创建与使用详解
ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables.这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据.当会话退出或者用户提交comm ...
- IIC简介(转载)
来自:https://www.cnblogs.com/zalebool/p/4214599.html IIC简介: IIC 即Inter-Integrated Circuit(集成电路总线),这种总线 ...
- 51nod 1202 不同子序列个数(计数DP)
1202 子序列个数 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 子序列的定义:对于一个序列a=a[1],a[2],......a[n].则非空序列a'=a[p1],a ...
- hive实现根据用户分组,按用户记录求上下两条记录的时间差
在mysql,数据如下:#查询某一用户该日抽奖时间 select draw_time from user_draw_log where user_id = 1 and draw_date='2016- ...
- msconfig.exe
msconfig.exe 编辑 本词条缺少概述.名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 中文名 微软系统配置实用程序 外文名 msconfig.exe 出品者 Micros ...
- 我给女朋友讲编程CSS系列(2)- CSS语法、3大选择器、选择器优先级
首先看一下使用Css设置h1标签字体颜色和大小的例子,效果图如下: 新建一个网页test.html,然后复制粘贴下面的内容: <html> <head> <style t ...
- Python框架之Django学习笔记(十五)
表单 从Google的简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接口,HTML表单一直是交互性网站的支柱.本次内容将介绍如何用Django对用户通过表单提交的数据进行访问 ...
- PostgreSQL 行排序详解
在查询生成输出表之后,也就是在处理完选择列表之后,你还可以对输出表进行排序. 如果没有排序,那么行将以不可预测的顺序返回(实际顺序将取决于扫描和连接规划类型和在磁盘上的顺序, 但是肯定不能依赖这些东西 ...
- spring boot redis代码与配置
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Co ...
- sass和postcss
sass是css预处理器 需要安装node-sass支持 核心是c++编写 集成 sass-loader 把scss装换成css css-loader 找出@import和url()导入的语法,告诉w ...