C#将服务器端excel文件下载到客户端的简单方法

本文介绍了一种使用C#将服务器端的SQL数据导出为Excel文件,然后通过JavaScript设置a标签的href属性触发下载的方法。首先,通过C#将数据转化为DataTable并保存为Excel文件,然后在前端利用jQuery AJAX获取文件路径,设置a标签并触发点击事件以下载文件。
摘要由CSDN通过智能技术生成

上网查了很多方法,可是没有一个方法我测试成功的,然后我就用了一个比较笨但是还算可以用的方法。就是直接将服务器端文件路劲传到前台,用javascript设置a标签的href属性值,然后触发a标签的click事件,让其下载。

1)首先将dataset转换为excel文件,代码如下:

writeToExcel(){
/*
* *
* 将数据存储到datatable中便于导出到excel中,
* 我的数据是从sqlserver中取出来,存入到excel表中,然后存入到服务器端
*/
DateTime dayStart = Convert.ToDateTime( start + " " + starthour );
DateTime dayEnd = Convert.ToDateTime( end + " " + endhour );

//链接字符串,可以直接写,我这里是从web.config中取出来的
string strConn = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;

string strsql = "你的sql字符串";//sql语句
using (SqlConnection conn = new SqlConnection(strConn))
{
using (SqlCommand cmd = new SqlCommand( strsql, conn ))
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
WenshuExl ws = new WenshuExl();//WenshuExl是自己定义的一个类,里面有下面的一些属性

ws.属性1 = reader.GetValue( 0 ).ToString();
ws.属性2 = reader.GetValue( 1 ).ToString();
ws.属性3 = reader.GetValue( 2 ).ToString();
ws.属性4 &

/// <summary> /// 导出到Excel /// </summary> /// <param name="table"></param> /// <returns></returns> public bool ToExcel(DataTable table) { FileStream fs = new FileStream(this._filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite); IWorkbook workBook = new HSSFWorkbook(); this._sheetName = this._sheetName.IsEmpty() ? "sheet1" : this._sheetName; ISheet sheet = workBook.CreateSheet(this._sheetName); //处理表格标题 IRow row = sheet.CreateRow(0); row.CreateCell(0).SetCellValue(this._title); sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, table.Columns.Count - 1)); row.Height = 500; ICellStyle cellStyle = workBook.CreateCellStyle(); IFont font = workBook.CreateFont(); font.FontName = "微软雅黑"; font.FontHeightInPoints = 17; cellStyle.SetFont(font); cellStyle.VerticalAlignment = VerticalAlignment.Center; cellStyle.Alignment = HorizontalAlignment.Center; row.Cells[0].CellStyle = cellStyle; //处理表格列头 row = sheet.CreateRow(1); for (int i = 0; i < table.Columns.Count; i++) { row.CreateCell(i).SetCellValue(table.Columns[i].ColumnName); row.Height = 350; sheet.AutoSizeColumn(i); } //处理数据内容 for (int i = 0; i < table.Rows.Count; i++) { row = sheet.CreateRow(2 + i); row.Height = 250; for (int j = 0; j < table.Columns.Count; j++) { row.CreateCell(j).SetCellValue(table.Rows[i][j].ToString()); sheet.SetColumnWidth(j, 256 * 15); } } //写入数据流 workBook.Write(fs); fs.Flush(); fs.Close(); return true; } /// <summary> /// 导出到Excel /// </summary> /// <param name="table"></param> /// <param name="title"></param> /// <param name="sheetName"></param> /// <returns></returns> public bool ToExcel(DataTable table, string title, string sheetName, string filePath) { this._title = title; this._sheetName = sheetName; this._filePath = filePath; return ToExcel(table); }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值