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;iServlet代码:
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表格数据文件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
信息
时间
数据
医生
卡号
类型
症状
生成
单元
文件
班级
病历
医院
原因
管理
坐标
结果
姓名
部门
人员
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库未来的技术方向
两个mysql数据库同步
交换机与服务器的配置
数据库文件选项卡中添加数据文件
数据库怎么看表空间大小
云计算网络安全公司排名
有关创建数据库的方法不正确
全境封锁2连接不了服务器
没有输入法软件开发
智能型知识数据库
平台酒店预订数据库
数据库管理系统中查询功能
芜湖网络安全
山东大数据软件开发价格
数据库录入数据怎么换行
win7iis服务器怎么升级
河北大者网络技术有限公司地址
软件开发列表
云文件服务器有多大
软件开发专科工资多少
棋牌类软件开发者资质
阳江filecoin服务器
安徽宣城软件开发培训哪里有
网络安全与云计算关系
网络安全概念股票有哪些
数据库怎么查询不同姓名
省市级联与数据库
御龙在天登录后服务器断电
株洲net软件开发培训机构
群晖设置两个服务器