excel文件导出之前的等待提示信息

前言

如题,最近也是遇到了一个项目里有导出数据到excel的功能,因为数据量大以及网络原因,经常点击导出按钮后迟迟不响应,对等待的人很不友好,所以建议加一个等待提示框。(本来想加个进度条,奈何有问题一直解决不掉,赶进度只好换成简单的提示框了QAQ)

温馨提示:项目是ssh,所以以下实现基于此。若springboot则根据自己情况替换。

实现

先上前台代码:

exportUrl: apiPrefix + "!excelExport.action?timeZone=",
isExportUrl: apiPrefix + "!isExport.action",

...

/**
@param isExportUrl   是否导出标志的action方法路径
@param exportExcelUrl 导出excel的action方法路径
*/
function do_export(isExportUrl, exportExcelUrl) {
    var index = top.layer.alert("数据正在导出中,请耐心等待!", {icon: 16,closeBtn:0,btn:[]});
    let d = new Date();
    let utc = d.getTimezoneOffset();
    let da = 8 * 60 - (-utc);
    location.href = exportExcelUrl + da;
    // 定时器判断导出进度是否完成
    var timer = setInterval(function(){//每隔1秒进行调用该函数
        $.ajax({
            url:isExportUrl,
            success: function(data){
                console.log(data);
                if(data === "true"){//如果返回的数据是已经成功了说明表格已经加载完成了
                    layer.closeAll();//关闭所有的提示框
                    //关闭弹出框
                    top.layer.close(index);
                    clearInterval(timer);//清除这个方法
                }
            },
            error:function(e){
                console.log("访问失败");
                console.log(e.responseText);
            }
        });
    }, 1000);
}

后端代码:

父类BaseAction中:

// 新增获取session对象
	public HttpSession getSession() {
		return ServletActionContext.getRequest().getSession();
	}

	// 成功
	public void writeWithUtf8(String str) {
		try {
			HttpServletResponse response = ServletActionContext.getResponse();
			response.setContentType("text/html");
			response.setCharacterEncoding("utf-8");
			this.write(str);
		} catch (Exception e) {
			log.error(e,e);
		}
	}
	// 输出响应
	public void write(String str) throws Exception {
		HttpServletResponse response = this.getResponse();
		response.getWriter().write(str);
		response.getWriter().flush();
		response.getWriter().close();
	}

——子类xxInfoAction里isExport方法——:

// 新增一个通用获取是否导出完毕方法,session中存入一个exportedFlag标志
    public void isExport() {
        Object exportedFlag = super.getSession().getAttribute("exportedFlag");
        if (exportedFlag == null) {
            logger.info("已经导出完毕");
            super.writeWithUtf8("true");
        }else {
            // logger.info("还未导完");
            super.writeWithUtf8("false");
        }
    }

——子类xxInfoAction里excelExport方法——:

public String excelExport() {
        // 导出前设置session中exportedFlag任意值,导出后清空
        super.getSession().setAttribute("exportedFlag", "false");

        HSSFWorkbook workbook = new HSSFWorkbook();
        try {
           ...//导出完毕了
          super.getSession().removeAttribute("exportedFlag");
		  return filename;
        } catch (Exception e) {
            e.printStackTrace();
            log.error(e);
        } finally {
            try {
                workbook.close();
            } catch (Exception e) {
                log.error(e);
            }
        }

        return null;
    }

附:springboot里进度条实现:实现文件导出,写入等进度条实时显示


over~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。   Bootcfg   bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。   含有下列参数的 bootcfg 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。   用法:   bootcfg /default  设置默认引导项。   bootcfg /add    向引导列表中添加 Windows 安装。   bootcfg /rebuild  重复全部 Windows 安装过程并允许用户选择要添加的内容。   注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。   bootcfg /scan    扫描用于 Windows 安装的所有磁盘并显示结果。   注意:这些结果被静态存储,并用于本次会话。如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。   bootcfg /list   列出引导列表中已有的条目。   bootcfg /disableredirect 在启动引导程序中禁用重定向。   bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings]   在启动引导程序中通过指定配置启用重定向。   范例: bootcfg /redirect com1 115200 bootcfg /redirect useBiosSettings   hkdsk   创建并显示磁盘的状态报告。Chkdsk 命令还可列出并纠正磁盘上的错误。   含有下列参数的 chkdsk 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 chkdsk 命令。   vol [drive:] [ chkdsk [drive:] [/p] [/r]   参数  无   如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。 drive: 指定要 chkdsk 检查的驱动器。 /p   即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r   找到坏扇区并恢复可读取的信息。隐含着 /p 参数。   注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart   创建和删除硬盘驱动器上的分区。diskpart 命令仅在使用故障恢复控制台时才可用。   diskpart [ /add |/delete] [device_name |drive_name |partition_name] [size]   参数 无   如果不带任何参数,diskpart 命令将启动 diskpart 的 Windows 字符模式版本。   /add   创建新的分区。   /delete   删除现有分区。   device_name   要创建或删除分区的设备。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   drive_name   以驱动器号表示的待删除分区。仅与 /delete 同时使用。以下是驱动器名称的范例:   D:   partition_name   以分区名称表示的待删除分区。可代替 drive_name 使用。仅与 /delete 同时使用。以下是分区名称的范例:   DeviceHardDisk0Partition1    大小   要创建的分区大小,以兆字节 (MB)表示。仅与 /add 同时使用。   范例   下例将删除分区: diskpart /delete Device HardDisk0 Partition3 diskpart /delete F:   下例将在硬盘上添加一个 20 MB 的分区:   diskpart /add Device HardDisk0 20   Fixboot
自己写的C#常用类库,使用时请先添加引用:UsrCustomFun.dll、DevComponents.DotNetBar2.dll,压缩包内的其他文件请与UsrCustomFun.dll放置同一目录,然后在程序中引用命名空间:using UsrCustomFun;包括: 1.自定义MessageBox,消息内容与错误代码分开,使用了6个重载方式。调用方法例子: UserMessageBox.UsrShow("执行SQL查询出错!", "数据库错误", ec.Message.ToString()); 2.等待提示窗口,使用了3个重载方法。 打开:UserWaitBox.UsrShow("等待信息"); 关闭:UserWaitBox.UsrClose(); 3.打印DataGridView,使用了9个重载方式,可自定义标题与打印样式: DataGridViewPrint.PrintDgv(dataGridView); 4.DataTable导出Excel,3个重载方式: DataTableToExcel.DtToExcel(DataTable); 5.DataTable生成Pdf文件,6个重载方式: UsrExport.ExPdf(dataTable); 6.XML文件操作,可根据XML文件节点、路径来读取、修改、写入XML: UserXml.ReadXml(string XML的路径); UserXml.ReadXmlElement(string XML的路径,节点名称); UserXml.WriteXmlElement(XML路径,节点名称,内容); 7.数据库操作,目前有Access、SqlServer、Oracel (7.1)先配置数据库连接字符串: UsrCustomFun.SqlConn.SqlParameters下根据数据库类型返回一个数据库连接字符串。 (7.2)再执行数据库操作: (7.2.1)UsrCustomFun.SqlConn.SqlConnAccess下为Access的数据库操作,可根据SQL返回int型、string型、DataTable、DataReader、DataSet及无返回操作。 (7.2.2)UsrCustomFun.SqlConn.SqlConnOracle,操作类型同7.2.1 (7.2.3)UsrCustomFun.SqlConn.SqlConnSqlServer,操作类型同7.2.1
本系统是在Windows XP系统和MapGis6.7(B20051118)基础上,以Microsoft VC++ 6.0为编程语言,MapGis 6.7 SDK为开发平台进行开发的地质图件制作软件。系统基于MapGis输入编辑子系统强大的图形编辑能力,添加专业的地质图件制作工具,大大提高了地质图件的制作效率,能够很完美的转换CAD数据格式为MapGis格式。地质数据采集系统采用Microsoft Access的MDB格式,自动计算绘制符合行业标准的MapGis格式地质图件。 本软件完全免费使用。在使用过程中,如果是本软件的缺陷造成你的损失,本人不承担任何责任。一旦开始使用,视为你同意。 本软件可以自由复制传播,但不可用于商业用途。 操作演示请切换到“操作视频”帮助页面,网上下载高清有声视频。 现Section版本具有的主要功能模块: 1、绘制剖面图功能; 2、绘制柱状图功能; 3、辅助工具Ⅰ和辅助工具Ⅱ(CAD转MapGis文件); 4、其他功能(暂时未归类功能)。 编辑本段Section快捷键对照表 Ctrl+A 选择相同图元功能 B 选择区 Ctrl +C 复制图元功能 C 选择点 Ctrl +V 粘贴图元功能 N 选择弧段 Ctrl +X 剪切图元功能 V 选择线 Ctrl +Z 后悔操作 X 选择子图 Shift+Z 选多类型图元功能 Z 选择文本 Shift +C 超级拷贝功能 E 扩展工具箱 Shift +V 超级粘贴功能 T 系统工具箱 F2 正交功能 Del 删除选择图元 Tab 全屏功能 空格键 捕捉功能 → 向右移动选择图元 ↑ 向上移动选择图元 ← 向左移动选择图元 ↓ 向下移动选择图元 Y 捕捉点图元 U 捕捉节点及端点 I(i) 捕捉交叉点 O 捕捉垂点 P 捕捉最近点 [ 捕捉中点 鼠标中键 按住可以移动图形 鼠标滚轮 放大缩小功能 双击鼠标中键 复原窗口功能 双击鼠标右键 取消所有操作,回到初始状态 (以上快捷键不区分大小写),其它快捷键与mapgis相同。 在编辑视图中,如果状态为准备状态,按住Ctrl右击,将弹出常用图元编辑快捷菜单;按住Shift右击,将弹出扩展功能快捷菜单。 编辑本段安装与卸载 系统要求 基础软件:MapGis软件。推荐MapGis 6.7版本Build051118。 系统支持:Section软件支持Microsoft Windows 的2000, XP, Vista和 7系列的操作系统。(32位,64位未测试)。 语言:支持中文,简体。 下载 进入地信网论坛和华夏土地网论坛下载最新版本的Section程序。 安装软件步骤 1)对于Section单个程序:把section.exe和section.chm等放入MapGis67\program目录内即可。 2)对于独立安装包:(相对于单个程序文件,还包含了先前的各种自定义配置文件) 第一步:双击运行安装程序Section2010.exe,打开安装向导页面开始安装Section软件; 第二步:仔细阅读“许可协议”,点击“同意”,继续下一步安装,否则点击“取消”,退出软件安装; 第三步:仔细阅读“信息”,阅读软件重要信息,点击“下一步”,继续下一步安装,否则点击“取消”,退出软件安装; 第四步:选择安装路径:默认情况下,软件安装在系统的C:\MapGis67\program目录下,单击“浏览”可更改路径;注意非默认位置时,目录只要指向program的上级目录,即mapgis67。 第五步:请“选择组件”,有完全安装,简洁安装和自定义安装3种供选择。点击“下一步”,继续下一步安装; 第六步:在开始菜单文件夹中创建程序的文件夹名称。点击“下一步”,继续下一步安装; 第七步:选择附加任务:创建桌面快捷方式和快捷启动栏快捷方式,以及Section关联MapGis文件等。勾选所需选项,点击“下一步”,开始准备安装; 第八步:点击“安装”。直至最后,不想在安装完成后运行Section程序请去勾,点击完成。 卸载 1)对于非安装包:把section.exe程序和section.chm等文件删除即可。 2)对于独立安装包:打开控制面板,进入添加/删除程序(Win7的为程序和功能)找到Section卸载项目,双击“Section卸载”或者右键菜单中的卸载。 FAQ: 1、 双击section.exe后出现 “无法启动此程序,因计算机丢失basroot.dll……”的提示,程序不能使用? 答:没有在mapgis环境下缺少基本组件和动态链接库,运行程序会出现此提示,把section.exe放入MapGis67\program目录内即可。 0327d正式版0612 软件更新日志 1、修正不能删除角度花纹有残留的Bu

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值