首页 > 编程语言 >ASP.NET窗体开发实现下载Excel表格数据

ASP.NET窗体开发实现下载Excel表格数据

时间:2023-11-06 13:01:22浏览次数:30  
标签:row1 ASP keyword Excel System CreateCell 窗体 using SetCellValue

使用Excel表格下载,还是要先下载NPOI插件,下载安装后,才能直接下载Excel表格。

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EnglishProject.Model;
using NPOI.HSSF.UserModel;

namespace EnglishProject.Back
{
    public partial class down : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string keyword = "";
            string sql = $"select * from entryUser ";
            if (Request.QueryString["keyword"] != null)
            {
                keyword = Request.QueryString["keyword"].ToString();
            }
            if (!string.IsNullOrEmpty(keyword))
            {
                sql += $" where realname like '%{keyword}%' ";
            }
            DataTable list = DBHelper.getDataTable(sql);
            
            //将查询出来的数据转化为对象列表的格式
            HSSFWorkbook excelBook = new HSSFWorkbook(); //创建工作簿Excel

            NPOI.SS.UserModel.ISheet sheet1 = excelBook.CreateSheet("英语四六级报考详情信息");//为工作簿创建工作表并命名

            //编写工作表 (1)表头 (2)数据:list

            NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);//创建第一行

            row1.CreateCell(0).SetCellValue("ID"); //创建其他列并赋值( 根据具体数据写代码...)
            row1.CreateCell(1).SetCellValue("用户名");
            row1.CreateCell(2).SetCellValue("姓名");
            row1.CreateCell(3).SetCellValue("学校");
            row1.CreateCell(4).SetCellValue("专业");
            row1.CreateCell(5).SetCellValue("年级");
            row1.CreateCell(6).SetCellValue("性别");
            row1.CreateCell(7).SetCellValue("民族");
            row1.CreateCell(8).SetCellValue("手机号");
            row1.CreateCell(9).SetCellValue("报考类型");
            row1.CreateCell(10).SetCellValue("报名结果");
            row1.CreateCell(11).SetCellValue("创建时间");
            //...根据数据库表字段而定...

            for (int i=0;i<list.Rows.Count;i++)
            {
                //创建行( 根据具体数据写代码...)
                NPOI.SS.UserModel.IRow rowTemp = sheet1.CreateRow(i + 1);
                rowTemp.CreateCell(0).SetCellValue(list.Rows[i]["id"].ToString());//对应表字段
                rowTemp.CreateCell(1).SetCellValue(list.Rows[i]["username"].ToString());
                rowTemp.CreateCell(2).SetCellValue(list.Rows[i]["realname"].ToString());
                rowTemp.CreateCell(3).SetCellValue(list.Rows[i]["school"].ToString());
                rowTemp.CreateCell(4).SetCellValue(list.Rows[i]["speciality"].ToString());
                rowTemp.CreateCell(5).SetCellValue(list.Rows[i]["grade"].ToString());
                rowTemp.CreateCell(6).SetCellValue(list.Rows[i]["sex"].ToString());
                rowTemp.CreateCell(7).SetCellValue(list.Rows[i]["nation"].ToString());
                rowTemp.CreateCell(8).SetCellValue(list.Rows[i]["phone"].ToString());
                rowTemp.CreateCell(9).SetCellValue(list.Rows[i]["type"].ToString());
                rowTemp.CreateCell(10).SetCellValue(String.IsNullOrEmpty(list.Rows[i]["type"].ToString()) ? "未报名" : "报名成功");
                rowTemp.CreateCell(11).SetCellValue(list.Rows[i]["createtime"].ToString());
            }

            var fileName = "英语四六级报考表" + ".xls";//文件名

            //将Excel表格转化为流,输出

            MemoryStream bookStream = new MemoryStream();//创建文件流

            excelBook.Write(bookStream); //文件写入流(向流中写入字节序列)

            bookStream.Seek(0, SeekOrigin.Begin);//输出之前调用Seek,把0位置指定为开始位置

            Response.AddHeader("Content-Disposition", string.Format("attachment; filename="+ fileName, HttpUtility.UrlEncode(fileName + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8)));
            Response.BinaryWrite(bookStream.ToArray());
            Response.End();
            bookStream.Close();
            bookStream.Dispose();
        }
    }
}



标签:row1,ASP,keyword,Excel,System,CreateCell,窗体,using,SetCellValue
From: https://blog.51cto.com/u_16322118/8204421

相关文章

  • EXCEL VBA自动设置坐标轴上下限
    下面的效果图展示了,将图表Y轴的的最大/最小值进行了动态设置Y轴最大值为:数据源最大值+2Y轴最小值为:数据源最小值-2通过上面的方法,数据源变化,那么Y轴的上下限也会自动变化 代码部分关键字MinimumScale设置Y轴的最小值关键字MaximumScale设置Y轴的最小值通过Max与Min......
  • 在线预览文件-word、excel、图片、ppt
    vue中引入插件 VueOffice,npm下载,以下插件需要单独下载VueOfficeDocxVueOfficeExcel<template><divstyle="height:700px;overflow:auto;"><vue-office-docxstyle="min-height:700px;":src="excel"@rendered="rendered&......
  • # yyds干货盘点 #3个Excel表格中每个门店物品不同,想要汇总在一起(方法四)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公处理的问题,一起来看看吧。上一篇文章中,我们已经看到了三种解决办法了,这一篇文章我们一起来看看另外一种方法。二、实现过程这里【瑜亮老师】给了concat纵向合并的方式能操作的方法,代码如下......
  • 使用openpyxl库读取Excel文件数据
    在Python中,我们经常需要读取和处理Excel文件中的数据。openpyxl是一个功能强大的库,可以轻松地实现Excel文件的读写操作。本文将介绍如何使用openpyxl库读取Excel文件中的数据。1.导入所需库首先,我们需要导入openpyxl库,这个库提供了许多用于操作Excel文件的功能。fromopenpyx......
  • Excel统计某字符或关键字出现的次数
    原始数据区域为A1:A5,每个单元格中包含不同或相同的文本,要根据需求求某个字符或关键字在各单元格文本中出现的次数总和。首先,求“北京”出现的次数(整个单元格内容等于“北京”)。我们输入公式:=COUNTIF(A1:A5,”北京”)结果返回1,因为源数据中只有A1单元格整个文本内容是“北京”。然......
  • EXCEL中怎样将一列内容转成一行
    打开需要处理的EXCEL文档全选需要以行排列的一列内容鼠标右键或ctrl+c复制在一空白行中的单元格内,点击鼠标右键找到并单击选择性粘贴,在弹出的窗体中选择转置完成列转行操作......
  • ASP.NET Core+Vue3 实现SignalR通讯
    从ASP.NETCore3.0版本开始,SignalR的Hub已经集成到了ASP.NETCore框架中。因此,在更高版本的ASP.NETCore中,不再需要单独引用Microsoft.AspNetCore.SignalR包来使用Hub。在项目创建一个类继承Hub,首先是写一个CreateConnection方法ConnectionId是SignalR中标识的客户端连接的唯......
  • Asp.Net Core webapi+net6 使用资源筛选器(过滤器) 做缓存
    写一个特性类,用来做标记[AttributeUsage(AttributeTargets.Method)]//只对方法有效publicclassResourceFilterAttribute:Attribute{}我这里使用了MemoryCache来做缓存,也可以使用字典来做,但一定要加上static,否则字典每一次请求都会new一个实例,缓存的东西就丢了private......
  • C# winform控件大小跟随窗体大小改变
    intiFormWidth,iFormHeight;//初始窗体宽高//窗体加载事件privatevoidForm1_Load(objectsender,EventArgse){iFormWidth=this.Width;//初始宽iFormHeight=this.Height;//初始高WriteIn_Tags(this);//记录初始控件信息}//调整控件大小事件privat......
  • 如何实施符合功能安全及ASPICE要求的模型动态测试 ——TPT Workshop邀请函
    尊敬的女士/先生:2023年3月,北汇信息与诸多工程师相约上海,成功举办了今年第一场TPTWorkshop活动,与大家进行了深入的技术交流。如今,2023年已渐渐步入尾声,我们将在北汇信息上海总部再次举办题为“如何实施符合功能安全及ASPICE要求的模型动态测试”的TPTWorkshop活动,诚邀各位新老......