首页 > 数据库 >java oracle easypoi 百万数据导出

java oracle easypoi 百万数据导出

时间:2024-06-14 11:11:25浏览次数:19  
标签:java name Excel value ApiModelProperty width private oracle easypoi


private static  final Integer pageSize=100000;
/**
     * zcc
     * @param fixmedinsCode
     * @param title
     * @param sheetName
     */
    public void exportAudtMorethanVo(String fixmedinsCode,String title, String sheetName) {
        String filePath = excelPath + fixmedinsCode;
        FileUtils.createFile(filePath);
        // 指定导出的文件路径
        FileOutputStream fos = null;
        Workbook workbook = null;
        try {

            LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
            ExportParams exportParams = new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), sheetName);
            exportParams.setMaxNum(1048576);
            exportParams.setType(ExcelType.XSSF);
            workbook = ExcelExportUtil.exportBigExcel(exportParams, AudtMorethanVo.class, new IExcelExportServer() {
                /**
                 * obj 就是下面的10,限制条件
                 * page 是页数,他是在分页进行文件转换,page每次+1
                 */
                @Override
                public List<Object> selectListForExcelExport(Object obj, int page) {
                    //page每次加一,当等于obj的值时返回空,代码结束;
                    if (((int) obj) == page) {
                        return null;
                    }
                    List<AudtMorethanVo> audtMorethanVos = null;
                    try {
                        audtMorethanVos = audtFixmedinsService.selectAudtMorethanVoByfixmedinsCodeByPage(fixmedinsCode,null, page, pageSize);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    return CollectionUtil.isNotEmpty(audtMorethanVos)?Arrays.asList(audtMorethanVos.toArray()):null;
                }
            }, pageSize);
            String fileName = workbook.getSheetAt(0).getSheetName();//sheet名字当文件名称
            fos = new FileOutputStream(filePath + "/" + fileName + ".xlsx");
            workbook.write(fos);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                    workbook.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }


    }

  

/**
     * zcc
     * 创建文件夹;
     * @param path 路径
     */
    public static void createFile(String path) {
        File file = new File(path);
        //判断文件是否存在;
        if (!file.exists()) {
            //创建文件;
            file.mkdirs();
        }
    }

  

@Data
@ApiModel(value="AudtMorethanVo对象")
public class AudtMorethanVo implements Serializable {

    private static final long serialVersionUID = 1L;
    /**问题分类ID*/
//    @Excel(name = "问题分类ID", width = 15)
    @ApiModelProperty(value = "问题分类ID")
    private String proclationid;

    /**项目*/
    @Excel(name = "项目", width = 15)
    @ApiModelProperty(value = "项目")
    private String protName;

    /**问题描述*/
    @Excel(name = "问题描述", width = 60)
    @ApiModelProperty(value = "问题描述")
    private String probDestion;

    /**定点医药机构编号*/
    @Excel(name = "定点医药机构编号", width = 15)
    @ApiModelProperty(value = "定点医药机构编号")
    private String fixmedinsCode;
    /**定点医药机构名称*/
    @Excel(name = "定点医药机构名称", width = 15)
    @ApiModelProperty(value = "定点医药机构名称")
    private String fixmedinsName;
    /**结算ID*/
    @Excel(name = "结算ID", width = 15)
    @ApiModelProperty(value = "结算ID")
    private String setlId;
    /**证件号码*/
    @Excel(name = "证件号码", width = 15)
    @ApiModelProperty(value = "证件号码")
    private String certno;
    /**人员姓名*/
    @Excel(name = "人员姓名", width = 15)
    @ApiModelProperty(value = "人员姓名")
    private String psnName;
    /**性别*/
    @Excel(name = "性别", width = 15)
    @ApiModelProperty(value = "性别")
    private String gend;
    /**年龄*/
    @Excel(name = "年龄", width = 15)
    @ApiModelProperty(value = "年龄")
    private String age;
    /**住院号*/
    @Excel(name = "住院号", width = 15)
    @ApiModelProperty(value = "住院号")
    private String iptOtpNo;
    /**出院科室*/
    @Excel(name = "出院科室", width = 15)
    @ApiModelProperty(value = "出院科室")
    private String dscgDeptName;
    /**住院天数*/
    @Excel(name = "住院天数", width = 15)
    @ApiModelProperty(value = "住院天数")
    private String iptDays;
    /**入院日期*/
    @Excel(name = "入院日期", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "入院日期")
    private Date begndate;
    /**出院日期*/
    @Excel(name = "出院日期", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "出院日期")
    private Date enddate;
    /**医疗类别*/
    @Excel(name = "医疗类别", width = 15)
    @ApiModelProperty(value = "医疗类别")
    private String medType;
    /**医保目录名称*/
    @Excel(name = "医保目录名称", width = 35)
    @ApiModelProperty(value = "医保目录名称")
    private String mxHilistName;
    /**医保目录编码*/
    @Excel(name = "医保目录编码", width = 35)
    @ApiModelProperty(value = "医保目录编码")
    private String mxHilistCode;
    /**收费时间*/
    @Excel(name = "收费时间", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "收费时间")
    private Date mxFeeOcurTime;
    /**收取数量*/
    @Excel(name = "收取数量", width = 15,type = 4)
    @ApiModelProperty(value = "收取数量")
    private Integer mxCnt;
    /**金额*/
    @Excel(name = "金额", width = 15,type = 4)
    @ApiModelProperty(value = "金额")
    private BigDecimal mxFeeSumamt;
    /**单价*/
    @Excel(name = "单价", width = 15,type = 4)
    @ApiModelProperty(value = "单价")
    private Integer mxPric;
    /**超出数量*/
    @Excel(name = "超出数量", width = 15,type = 4)
    @ApiModelProperty(value = "超出数量")
    private Integer iptDaysExceed;
    /**超出金额*/
    @Excel(name = "超出金额", width = 15,type = 4)
    @ApiModelProperty(value = "超出金额")
    private BigDecimal feeSumamtExceed;
    /**违规数量*/
    @Excel(name = "违规数量", width = 15,type = 4)
    @ApiModelProperty(value = "违规数量")
    private Integer mxVitionNumber;
    /**违规金额*/
    @Excel(name = "违规金额", width = 15,type = 4)
    @ApiModelProperty(value = "违规金额")
    private BigDecimal mxVitionAmount;
}

  Mapper:

List<AudtMorethanVo> selectAudtMorethanVoByfixmedinsCodeByPage(@Param("fixmedinsCode") String fixmedinsCode, @Param("protName") String protName,@Param("pageNum") Integer pageNum,@Param("pageSize")Integer pageSize);

  XML:

<select id="selectAudtMorethanVoByfixmedinsCodeByPage"  resultType="com.frkj.modules.fund.common.vo.AudtMorethanVo">
        SELECT * FROM (

            SELECT e.*, ROWNUM rnum FROM (
                select
                b.proclation,
                b.prot_name ,
                b.prob_destion ,
                a.fixmedins_code,
                a.fixmedins_name,
                a.setl_id,
                a.certno,
                a.psn_name,
                a.gend,
                a.age,
                a.ipt_otp_no,
                a.dscg_dept_name,
                a.ipt_days,
                a.begndate,
                a.enddate,
                a.med_type,
                a.mx_hilist_name,
                a.mx_hilist_code,
                a.mx_fee_ocur_time,
                a.mx_cnt,
                a.mx_fee_sumamt,
                a.mx_pric,
                a.ipt_days_exceed,
                a.fee_sumamt_exceed,
                a.mx_vition_number,
                a.mx_vition_amount
                from AUDT_Morethan a,AUDT_RU b
                where a.vtionsueid=b.vtionsueid
                <if test="fixmedinsCode!=null and fixmedinsCode!=''">
                    and a.fixmedins_code=#{fixmedinsCode}
                </if>
                <if test="protName!=null and protName!=''">
                    and b.prot_name=#{protName}
                </if>
                order by a.vtionsueid,a.setl_id,a.mx_fee_ocur_time

            ) e WHERE ROWNUM <= #{pageNum} * #{pageSize}

        ) WHERE rnum > (#{pageNum} - 1) * #{pageSize}

    </select>

  个人电脑测试结果:

 

 

 

 

 

 

 

 

标签:java,name,Excel,value,ApiModelProperty,width,private,oracle,easypoi
From: https://www.cnblogs.com/yscec/p/18247443

相关文章

  • 第十一届蓝桥杯大赛软件类决赛 Java A 组
    文章目录发现宝藏【考生须知】发现宝藏前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。第十一届蓝桥杯大赛软件类决赛JavaA组【考生须知】考试开始后,选手首先下载题目,并使用考场现场公布的解压密码......
  • JavaEE——声明式事务管理案例:实现用户登录
    一、案例要求        本案例要求在控制台输入用户名密码,如果用户账号密码正确则显示用户所属班级,如果登录失败则显示登录失败。实现用户登录项目运行成功后控制台效果如下所示。欢迎来到学生管理系统请输入用户名:zhangsan请输入zhangsan的密码:123456用户登录成......
  • Java IO流(二进制IO流、文本IO流)
    JavaIO流(Input/OutputStream)是Java中用于处理输入输出操作的一种机制。IO流可以从不同的数据源读取数据,或者将数据写入到不同的目标。根据处理的数据类型,IO流可以分为二进制IO流和文本IO流。一、二进制IO流: 二进制IO流主要用于处理非文本数据,如图片、音频、视频等。在J......
  • Java到AI大模型,我为什么选择的后者
    我为什么从Java转到AI大模型在编程的海洋里,Java一直是我信赖的“小船”,载着我航行在代码的世界中。然而,随着行业的不断发展和变化,我开始感受到了一丝的迷茫和不安。我开始担心,随着技术的不断更新,Java这艘“小船”是否还能带我乘风破浪,继续前行。正是在这样的背景下,我接触......
  • 实战分析Java的异步编程,并通过CompletableFuture进行高效调优
    一、写在开头在我们一开始讲多线程的时候,提到过异步与同步的概念,这里面我们再回顾一下:同步:调用方在调用某个方法后,等待被调用方返回结果;调用方在取得被调用方的返回值后,再继续运行。调用方顺序执行,同步等待被调用方的返回值,这就是阻塞式调用;异步:调用方在调用某个方法后,直接返......
  • Java中如何使用运算符?
    在Java中,运算符是用于执行基本数学计算、逻辑比较以及赋值操作等的重要元素。以下是Java中常见的运算符及其使用方法的详细介绍:1:算术运算符:加法(+):用于将两个数相加。inta=5;intb=3;intsum=a+b;减法(-):用于将两个数相减。intx=10;......
  • 重学java 70.IO流 Commons-io工具包
    所有人都不看好你,可你偏偏最争气                            ——24.6.14一、介绍        IO技术开发中,代码量很大,而且代码的重复率较高。如果我们要遍历目录,拷贝自录就需要使用方法的递归调用,也增大了程序的复......
  • ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 添加自定义(GLSL)数据
    ArcGISJSAPI高级教程-ArcGISMapsSDKforJavaScript-添加自定义(GLSL)数据核心代码完整代码在线示例ArcGISMapsSDKforJavaScript从4.29开始增加RenderNode类,可以添加数据以及操作FBO(ManagedFBO);通过操作FBO,可以通过后处理实现很多效果,官方提供了几......
  • Java性能优化:实用技巧与策略全解析
    引言在软件开发中,性能常常是衡量应用成功的关键因素之一。对于Java应用来说,有效的性能优化不仅可以提高用户满意度,还能降低运营成本。本文将探讨一些高效的Java性能优化技巧,并通过实际代码示例展示如何实施这些策略。垃圾回收优化垃圾收集(GC)是Java性能优化中最关键的部分。......
  • 利用CompletableFuture优化Java中的异步编程
    在现代应用开发中,异步编程是提高应用性能和用户体验的关键技术之一。Java从1.8版本开始引入了CompletableFuture,它为编写非阻塞的异步代码提供了强大的工具。本文将详细介绍CompletableFuture的使用方法,并通过具体代码示例来展示如何在实际项目中应用。什么是CompletableFutur......