千家信息网

Java中怎么操作Jxl实现导出数据生成Excel表格数据文件

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要讲解了"Java中怎么操作Jxl实现导出数据生成Excel表格数据文件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java中怎么操作Jx
千家信息网最后更新 2025年01月17日Java中怎么操作Jxl实现导出数据生成Excel表格数据文件

这篇文章主要讲解了"Java中怎么操作Jxl实现导出数据生成Excel表格数据文件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java中怎么操作Jxl实现导出数据生成Excel表格数据文件"吧!

实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js、Css文件。页面:Jsp、拦截请求:Servlet、逻辑处理:ClassBean、数据库:SQLserver。

注意:Bean中操作SQL语句进行处理是公司内部方法,可替换为其它方法自行扩展!主要看代码逻辑业务处理!

使用SQLserver数据库进行多表连接查询得出需要展出的数据

则前台数据展示使用的是Easyui中的datagrid数据列表进行展示。

随机点击一行数据,点击详情个人信息弹窗打开,数据以及被填充到弹窗中!

拉到底部可见导出按钮,点击导出发送请求:传入个人就诊编号及卡号进行SQL查询个人数据实现导出

此时此刻Java操作Jxl生成Excel文件成功直接,让我们打开文件查看数据是否和我们后台设置的预期效果一致!

表格数据和预期效果一致代码如下:

Bean代码:

import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import jxl.CellView;import jxl.Workbook;import jxl.format.Border;import jxl.format.BorderLineStyle;import jxl.format.Colour;import jxl.write.Label;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;public class ImportBean {        private HttpServletRequest request;//客户端请求对象    private DBSource db; //操作SQL语句对象    private String MSG;  //提示信息            //构造函数    public ImportBean(HttpServletRequest request) {        this.request = request;        this.db = new DBSource(request); // 数据库对象    }                //主诉与症状下拉框    public Vector loadZSZZCombo() throws SQLException{        Vector vec = null;        String sql ="  select '' as comboValue,'请选择' as comboName, '' as combotext  "+                 "union all " +                "select [编号],[主诉与症状],[查体]  FROM [V_医务管理_主诉症状信息表]";        sql+=" ORDER BY comboValue ";        vec = db.getConttexJONSArr(sql, 0, 0);        return vec;    }                    //页面初始化读取就诊信息    public Vector queryJZXX(int pageNum, int pageSize,String JZBH,String KH) throws SQLException{        String sql = ""; // 查询用SQL语句        Vector vec = null; // 结果集                    sql="select 就诊编号,卡号,姓名,班级或部门,人员类型,就诊医生,convert(nvarchar(19),就诊时间,21) as 就诊时间,主诉与症状,查体,是否隔离,诊断结果,诊疗意见,病历类型,isnull(转院原因,'') as 转院原因,isnull(转诊医院,'') as 转诊医院,isnull(转诊医生,'') as 转诊医生,isnull(convert(nvarchar(19),转院时间,21),'') as 转院时间  from ( SELECT l.就诊编号,a.[卡号],a.[姓名],b.班级名称 as 班级或部门,'1' as 人员类型,j.就诊医生,j.就诊时间  as 就诊时间,l.主诉与症状,l.查体,l.是否隔离,l.诊断结果,l.诊疗意见,l.病历类型,z.转院原因,z.转诊医院,z.转诊医生,z.转院时间" +             " from [V_基础信息_学生信息表] a "+            " left join [V_医务管理_就诊信息] j on j.卡号=a.卡号  left join [V_医务管理_病历信息] l on l.就诊编号=j.编号  " +             " left join [V_医务管理_转院信息] z on z.就诊编号=j.编号  left join dbo.V_基础信息_班级信息表 b on a.[行政班代码]=b.班级代码  "+            " union all SELECT l.就诊编号,a.[卡号],a.[姓名],c.CNAME as 班级或部门,'2' as 人员类型,j.就诊医生,convert(nvarchar(19),j.就诊时间,21) as 就诊时间,l.主诉与症状,l.查体,l.是否隔离,l.诊断结果,l.诊疗意见,l.病历类型,isnull(z.转院原因,'') as 转院原因,isnull(z.转诊医院,'') as 转诊医院,isnull(z.转诊医生,'') as 转诊医生,isnull(convert(nvarchar(19),z.转院时间,21),'')as 转院时间  " +             " from [V_基础信息_教职工信息表] a  "+            " left join [V_医务管理_就诊信息] j on j.卡号=a.卡号  left join [V_医务管理_病历信息] l on l.就诊编号=j.编号  "+            " left join [V_医务管理_转院信息] z on z.就诊编号=j.编号  left join [sysUserDept] b on a.卡号=b.[UserCode] "+            " left join [sysDepartment] c on b.[DeptCode]=c.[DeptCode] ) x  WHERE 1=1 AND x.就诊医生!='null' ";                        if(!"".equalsIgnoreCase(JZBH)){            sql+=" AND x.就诊编号='"+ MyTools.fixSql(JZBH) +"' ";        }        if(!"".equalsIgnoreCase(KH)){            sql+=" AND x.卡号='"+ MyTools.fixSql(KH) +"' ";        }                sql+=" ORDER BY x.人员类型,x.[卡号]  desc";        vec = db.getConttexJONSArr(sql, pageNum, pageSize);        return vec;    }                //导出excel表格    public String outputGRXX(String JZBH,String KH)throws SQLException {        Vector vec = null;        Vector vec2 = null;        String sql="";        String sql2="";        String savePath="";                sql="select 卡号,姓名,班级或部门,人员类型,就诊医生,convert(nvarchar(19),就诊时间,21) as 就诊时间,主诉与症状,查体,是否隔离,诊断结果,诊疗意见,病历类型,是否转院,isnull(转院原因,'') as 转院原因,isnull(转诊医院,'') as 转诊医院,isnull(转诊医生,'') as 转诊医生,isnull(convert(nvarchar(19),转院时间,21),'') as 转院时间  from ( SELECT l.就诊编号,a.[卡号],a.[姓名],b.班级名称 as 班级或部门,'1' as 人员类型,j.就诊医生,j.就诊时间  as 就诊时间,l.主诉与症状,l.查体,l.是否隔离,l.诊断结果,l.诊疗意见,l.病历类型,是否转院='',z.转院原因,z.转诊医院,z.转诊医生,z.转院时间" +                 " from [V_基础信息_学生信息表] a "+                " left join [V_医务管理_就诊信息] j on j.卡号=a.卡号  left join [V_医务管理_病历信息] l on l.就诊编号=j.编号  " +                 " left join [V_医务管理_转院信息] z on z.就诊编号=j.编号  left join dbo.V_基础信息_班级信息表 b on a.[行政班代码]=b.班级代码  "+                " union all SELECT l.就诊编号,a.[卡号],a.[姓名],c.CNAME as 班级或部门,'2' as 人员类型,j.就诊医生,convert(nvarchar(19),j.就诊时间,21) as 就诊时间,l.主诉与症状,l.查体,l.是否隔离,l.诊断结果,l.诊疗意见,l.病历类型,是否转院='',isnull(z.转院原因,'') as 转院原因,isnull(z.转诊医院,'') as 转诊医院,isnull(z.转诊医生,'') as 转诊医生,isnull(convert(nvarchar(19),z.转院时间,21),'')as 转院时间  " +                 " from [V_基础信息_教职工信息表] a  "+                " left join [V_医务管理_就诊信息] j on j.卡号=a.卡号  left join [V_医务管理_病历信息] l on l.就诊编号=j.编号  "+                " left join [V_医务管理_转院信息] z on z.就诊编号=j.编号  left join [sysUserDept] b on a.卡号=b.[UserCode] "+                " left join [sysDepartment] c on b.[DeptCode]=c.[DeptCode] ) x  WHERE 1=1 AND x.就诊医生!='null'  AND x.就诊编号='"+ MyTools.fixSql(JZBH) +"' AND x.卡号='"+ MyTools.fixSql(KH) +"' ";                vec=db.GetContextVector(sql);                //查询主诉与症状下拉框        sql2="select [编号],[主诉与症状],[查体]  FROM [V_医务管理_主诉症状信息表]";        vec2=db.GetContextVector(sql2);                //生成excel表        if (vec != null && vec.size() > 0) {            Calendar c = Calendar.getInstance();// 可以对每个时间域单独修改            savePath = MyTools.getProp(request, "Base.exportExcelPath");//导出excel文件服务器保存路径:F\:/UPLOAD/XZLMS/exportExcel/                            //创建文件夹            File file = new File(savePath);            if (!file.exists()) {                file.mkdirs();            }            savePath +=vec.get(1).toString() +"就诊记录详情"+ ".xls";            System.out.println(savePath);            try {                OutputStream os = new FileOutputStream(savePath);                WritableWorkbook wbook = Workbook.createWorkbook(os);// 建立excel文件                WritableSheet wsheet1 = wbook.createSheet(vec.get(1).toString(), 0);// 对第一张sheete,生成的工作表名称                WritableFont fontStyle;                WritableCellFormat contentStyle;                Label content;                                //生成标题                String[] title1=new String[]{"卡号","姓名","班级或部门","人员类型","就诊医生","就诊时间","主诉与症状","查体","是否隔离","诊断结果","诊疗意见","病历类型","是否转院","转院原因","转诊医院","转诊医生","转院时间"};                int counum1=0;//excel表中行数                String cellContent1 = ""; //当前单元格的内容                                for(int i=0;i

Servlet代码:

public class ImportBean_Servlet extends HttpServlet {    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doPost(request, response);    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {                //设置字符编码为UTF-8        request.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");                String active = MyTools.StrFiltr(request.getParameter("active"));// 拿取前台的active值        int pageNum = MyTools.parseInt(request.getParameter("page"));    //获得页面page参数 分页        int pageSize = MyTools.parseInt(request.getParameter("rows"));    //获得页面rows参数 分页                TraceLog.Trace("active...:"+active);        Vector jsonV = null;//返回结果集        JSONArray jal = null;//返回json对象             ImportBean bean = new ImportBean(request); //对象                //查询主诉与症状        if("loadZSZZCombo".equalsIgnoreCase(active)){            try {                jsonV = bean.loadZSZZCombo();                jal = (JSONArray) jsonV.get(2);                response.getWriter().write(jal.toString());            } catch (Exception e) {                e.printStackTrace();            }        }        //查询就诊信息        if("queryJZXX".equalsIgnoreCase(active)){            try {                String JZBH=URLDecoder.decode(MyTools.StrFiltr(request.getParameter("JZBH")), "UTF-8");//就诊编号                String KH=URLDecoder.decode(MyTools.StrFiltr(request.getParameter("KH")), "UTF-8");//卡号                jsonV = bean.queryJZXX(pageNum,pageSize,JZBH,KH);                if (jsonV != null && jsonV.size() > 0) {                    //最终处理:传回AJAX 结果集                    jal = (JSONArray)jsonV.get(2);                    response.getWriter().write("{\"total\":" + MyTools.StrFiltr(jsonV.get(0)) + ",\"rows\":" + jal.toString() + "}");//生成datagrid所需数据类型                }            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();                jal = JsonUtil.addJsonParams(jal, "MSG", "查询错误!"+ bean.getMSG() );                response.getWriter().write(jal.toString());            }        }                //导出个人信息详情Exls表格        if("outputGRXX".equalsIgnoreCase(active)){            String JZBH=URLDecoder.decode(MyTools.StrFiltr(request.getParameter("JZBH")), "UTF-8");//就诊编号            String KH=URLDecoder.decode(MyTools.StrFiltr(request.getParameter("KH")), "UTF-8");//卡号            try {                String filePath=bean.outputGRXX(JZBH,KH); //调用bean方法入参,返回生成文件路径                jal = JsonUtil.addJsonParams(jal, "MSG",bean.getMSG()); //生成json格式数据,返回状态值                jal = JsonUtil.addJsonParams(jal, "filePath", filePath);//生成json格式数据,返回路径                response.getWriter().write(jal.toString());            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }                                                            }}

Jsp:代码:

    <%-- 遮罩层 --%>       
文件生成中,请稍后...

感谢各位的阅读,以上就是"Java中怎么操作Jxl实现导出数据生成Excel表格数据文件"的内容了,经过本文的学习后,相信大家对Java中怎么操作Jxl实现导出数据生成Excel表格数据文件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0