在线紧急求助:jsp开发structs架构中怎样导出数据记录到客户端excel表 具体没有实现过,提供一个思路。使用sqlplus,把数据取出来,导出为CSV格式就可以了。或者干脆用比较土的办法,先从数据库中取出数据。再把你的数据在Java中组织一下,输出到该Excel文件中,还是以CSV格式组织就可以了。呵呵。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 大哥,快帮个忙吧。老板催得厉害哎其实就是一个怎样把后台返回的一个结果集写到本地的一个excel文件 这个简单啊,你的下载按钮的时间就需要完成如下几个步骤:(1):从数据库中取到你要的数据(2):通过HttpServletResponse的对象取得PrintWriter(3):写文件就行 多谢各位帮忙:我的msn:[email protected] 使用apache的poi 写excelHSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = workbook.createSheet();workbook.setSheetName(0, xlsName, HSSFWorkbook.ENCODING_UTF_16);HSSFRow row = sheet.createRow((short) 0);//创建新行HSSFCell cell;//创建列cell = row.createCell((short) (0));cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("姓名");cell = row.createCell((short) (0));cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("姓别");HSSFRow row1 = sheet.createRow((short) 1);//创建新行cell = row.createCell((short) (0));cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("小明");cell = row.createCell((short) (0));cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("男");FileOutputStream f=new FileOutputStream("c:\\aa.xls");创建文件输出流workbook.write(f);f.flush();f.close();----------------姓名 性别小明 男----------------详细操作请参考API文档 你自己改一改就可以了~!去网上下载个poi去 /*--------------------------------------- * 下载维修记录到excel表格 ---------------------------------------*/public ActionForward download(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ClassNotFoundException, IllegalAccessException, InstantiationException, IOException, ServletException { if (! (Validate.execute(httpServletRequest, "MANRDGET"))) { return null; } String msg=null; String begin_date=""; String end_date=""; ManrdgetActionForm manrdgetActionForm = (ManrdgetActionForm) actionForm; ManrdgetDao manrdgetDao = new ManrdgetDao(); begin_date=manrdgetActionForm.getBegin_date(); end_date=manrdgetActionForm.getEnd_date(); Collection col = manrdgetDao.selectWH(begin_date,end_date);//返回的col(里面就是col.add(databean)很多个bean)下边有说明 if (col.size() == 0) { msg="yes";//有记录 }else{ msg="no";//没有记录 } httpServletRequest.setAttribute("msg", msg); return actionMapping.findForward("MANRDGET"); }这就是返回的col: while (rs.next()) { ManrdgetBean manrdgetBean = new ManrdgetBean(); manrdgetBean.setGroup_acct(rs.getString("group_acct")); manrdgetBean.setFault_class_chin(rs.getString("fault_class_chin")); manrdgetBean.setProm_desc(rs.getString("prom_desc")); manrdgetBean.setDeal_desc(rs.getString("deal_desc")); col.add(manrdgetBean); }我现在要做的就是怎么能把这些数据直接保存在客户端,excel文件 上面的一些兄弟说的很对,生成到客户端的思路:先在服务器端生成这个文件,然后在下载,下面是我的部分代码,从数据库中取数据就不列出来了,主要列出怎么样生成这个文件到服务器端,然后在下载到客户端,问题就解决了...code :------------------------------------------Collection list = null;list = reportStatisticService.GetOrganizationReportStatistic(organizationId,selectYear,selectMonth,bizType);从数据库中取数据 if(list.size() != 0 && !(list.isEmpty())) { ReportListForm reportListFormExcel = null; Calendar calender = Calendar.getInstance(); calender.setTimeInMillis(System.currentTimeMillis()); String year= String.valueOf(calender.get(Calendar.YEAR)); String month = String.valueOf(calender.get(Calendar.MONTH)+1); String hour = String.valueOf(calender.get(Calendar.HOUR_OF_DAY)); String minute = String.valueOf(calender.get(Calendar.MINUTE)); String second = String.valueOf(calender.get(Calendar.SECOND)); if(month.length()<2) { month = "0"+month; } String day = String.valueOf(calender.get(Calendar.DAY_OF_MONTH)); if(day.length()<2) { day = "0"+day; } if(hour.length()<2) { hour = "0"+hour; } if(minute.length()<2) { minute = "0"+minute; } if(second.length()<2) { second = "0"+second; } String date = year+"/"+month+"/"+day+" "+hour+":"+minute+":"+second; String strFileName = ""; String strOrgCode = reportStatisticService.GetOrganizationCodeByOrganizationId(organizationId); strFileName = strOrgCode+"-"+year+month+day+".xls"; String realpath = request.getRealPath("/")+"/"+"\\generatereport\\"+strFileName; File file = new File(realpath); WritableWorkbook wwb = Workbook.createWorkbook(file); WritableSheet sheet = wwb.createSheet(strFileName.substring(0,(strFileName.length()-4)),0); sheet.setColumnView(0,35); WritableFont font1 = new WritableFont(WritableFont.TIMES, 10); WritableCellFormat format1 = new WritableCellFormat(font1); format1.setAlignment(jxl.format.Alignment.CENTRE); format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); format1.setBorder(Border.ALL, BorderLineStyle.THIN); Label labeldate = new Label(0,1,"报表生成时间:"+date,format1); Label label1 = new Label(0,2,"报送机构名称",format1); Label label2 = new Label(1,2,"报送年度",format1); Label label3 = new Label(2,2,"报送期数",format1); Label label4 = new Label(3,2,"报表总数",format1); Label label5 = new Label(4,2,"未填报",format1); Label label6 = new Label(5,2,"已填报",format1); Label label7 = new Label(6,2,"已汇总",format1); Label label8 = new Label(7,2,"已校验",format1); Label label9 = new Label(8,2,"已复核",format1); Label label10 = new Label(9,2,"被汇总",format1); Label label11 = new Label(10,2,"已审核",format1); sheet.addCell(labeldate); sheet.addCell(label1); sheet.addCell(label2); sheet.addCell(label3); sheet.addCell(label4); sheet.addCell(label5); sheet.addCell(label6); sheet.addCell(label7); sheet.addCell(label8); sheet.addCell(label9); sheet.addCell(label10); sheet.addCell(label11); int row = 3; //int column = 0; for(Iterator iterator = list.iterator();iterator.hasNext();) { reportListFormExcel = new ReportListForm(); reportListFormExcel = (ReportListForm)iterator.next(); Label labelA = new Label(0,row,reportListFormExcel.getOrgName(),format1); Label labelB = new Label(1,row,reportListFormExcel.getSelectYear(),format1); Label labelC = new Label(2,row,reportListFormExcel.getSelectMonth(),format1); Label labelD = new Label(3,row,String.valueOf(reportListFormExcel.getIntReportCount()),format1); Label labelE = new Label(4,row,String.valueOf(reportListFormExcel.getStatusType_1()),format1); Label labelF = new Label(5,row,String.valueOf(reportListFormExcel.getStatusType_2()),format1); Label labelG = new Label(6,row,String.valueOf(reportListFormExcel.getStatusType_3()),format1); Label labelH = new Label(7,row,String.valueOf(reportListFormExcel.getStatusType_4()),format1); Label labelI = new Label(8,row,String.valueOf(reportListFormExcel.getStatusType_5()),format1); Label labelJ = new Label(9,row,String.valueOf(reportListFormExcel.getStatusType_6()),format1); Label labelM = new Label(10,row,String.valueOf(reportListFormExcel.getStatusType_7()),format1); sheet.addCell(labelA); sheet.addCell(labelB); sheet.addCell(labelC); sheet.addCell(labelD); sheet.addCell(labelE); sheet.addCell(labelF); sheet.addCell(labelG); sheet.addCell(labelH); sheet.addCell(labelI); sheet.addCell(labelJ); sheet.addCell(labelM); row += 1; } sheet.setProtected(true); wwb.setProtected(true); wwb.write(); wwb.close(); reportListForm.setSelectYear(String.valueOf(selectYear)); reportListForm.setSelectMonth(String.valueOf(selectMonth)); String downloadpath = request.getContextPath()+"\\generatereport\\"+strFileName; try { 下载Excel文件... response.sendRedirect(downloadpath); return null; }catch(IOException ex) { ex.printStackTrace(); } 各位大哥小弟:这么简单的问题怎么就没有人会呢??强调一点:我要把返回来的数据集合直接写在本地excel文件里面不需要在服务器端 顶下 用PrintWriter怎么写excel zxm_dgcstars() 能仔细说下吗? 呵呵,直接修改HTML的输出类型就可以了 当然,得保证用户使用的是MS的IE浏览器、MS的WINDOWS操作系统、并安装有MS的OFFICE哦。 哈哈,csv文件已经得到了,我再看看能不能得到xls。再次感谢各位的帮忙!哈哈 如何让客户端由JSP生成的IE表格转为EXCEL文件啊。 部署tomcat问题 请问下这个问题解决方案 两次提交后,WEB程序不能正常执行! (大虾帮忙啊!) sun.net包那里有啊 我要做个从数据库里面调出来的数据在options里面,在struts里面怎么实现啊? 关于如何实现数据库查询的分页显示,求助各位高手! 50 分 求 GEF-runtime-3.0.1.zip 在哪里下载? 关于Session的一个问题! 求救:apache+tomcat遇到困难了 明天就要答辩,哪位大侠可以帮帮我?! JXL复制Excel模板,生成了却打不开 JSF中关于buttonLink失效的问题
其实就是一个怎样把后台返回的一个结果集写到本地的一个excel文件
你的下载按钮的时间就需要完成如下几个步骤:
(1):从数据库中取到你要的数据
(2):通过HttpServletResponse的对象取得PrintWriter
(3):写文件就行
我的msn:[email protected]
写excel
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
workbook.setSheetName(0, xlsName, HSSFWorkbook.ENCODING_UTF_16);
HSSFRow row = sheet.createRow((short) 0);//创建新行HSSFCell cell;//创建列
cell = row.createCell((short) (0));
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("姓名");
cell = row.createCell((short) (0));
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("姓别");HSSFRow row1 = sheet.createRow((short) 1);//创建新行
cell = row.createCell((short) (0));
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("小明");
cell = row.createCell((short) (0));
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("男");FileOutputStream f=new FileOutputStream("c:\\aa.xls");创建文件输出流workbook.write(f);
f.flush();
f.close();
----------------
姓名 性别
小明 男
----------------
详细操作请参考API文档
* 下载维修记录到excel表格
---------------------------------------*/
public ActionForward download(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws
ClassNotFoundException, IllegalAccessException, InstantiationException,
IOException, ServletException { if (! (Validate.execute(httpServletRequest, "MANRDGET"))) {
return null;
}
String msg=null;
String begin_date="";
String end_date="";
ManrdgetActionForm manrdgetActionForm = (ManrdgetActionForm) actionForm;
ManrdgetDao manrdgetDao = new ManrdgetDao();
begin_date=manrdgetActionForm.getBegin_date();
end_date=manrdgetActionForm.getEnd_date();
Collection col = manrdgetDao.selectWH(begin_date,end_date);//返回的col(里面就是col.add(databean)很多个bean)下边有说明
if (col.size() == 0) {
msg="yes";//有记录
}else{
msg="no";//没有记录
}
httpServletRequest.setAttribute("msg", msg);
return actionMapping.findForward("MANRDGET");
}
这就是返回的col:
while (rs.next()) {
ManrdgetBean manrdgetBean = new ManrdgetBean();
manrdgetBean.setGroup_acct(rs.getString("group_acct"));
manrdgetBean.setFault_class_chin(rs.getString("fault_class_chin"));
manrdgetBean.setProm_desc(rs.getString("prom_desc"));
manrdgetBean.setDeal_desc(rs.getString("deal_desc"));
col.add(manrdgetBean);
}我现在要做的就是怎么能把这些数据直接保存在客户端,excel文件
下面是我的部分代码,从数据库中取数据就不列出来了,主要列出怎么样生成这个文件到服务器端,然后在下载到客户端,问题就解决了...
code :
------------------------------------------
Collection list = null;
list = reportStatisticService.GetOrganizationReportStatistic(organizationId,selectYear,selectMonth,bizType);从数据库中取数据 if(list.size() != 0 && !(list.isEmpty()))
{
ReportListForm reportListFormExcel = null;
Calendar calender = Calendar.getInstance();
calender.setTimeInMillis(System.currentTimeMillis());
String year= String.valueOf(calender.get(Calendar.YEAR));
String month = String.valueOf(calender.get(Calendar.MONTH)+1);
String hour = String.valueOf(calender.get(Calendar.HOUR_OF_DAY));
String minute = String.valueOf(calender.get(Calendar.MINUTE));
String second = String.valueOf(calender.get(Calendar.SECOND));
if(month.length()<2)
{
month = "0"+month;
}
String day = String.valueOf(calender.get(Calendar.DAY_OF_MONTH));
if(day.length()<2)
{
day = "0"+day;
}
if(hour.length()<2)
{
hour = "0"+hour;
}
if(minute.length()<2)
{
minute = "0"+minute;
}
if(second.length()<2)
{
second = "0"+second;
}
String date = year+"/"+month+"/"+day+" "+hour+":"+minute+":"+second;
String strFileName = "";
String strOrgCode = reportStatisticService.GetOrganizationCodeByOrganizationId(organizationId);
strFileName = strOrgCode+"-"+year+month+day+".xls";
String realpath = request.getRealPath("/")+"/"+"\\generatereport\\"+strFileName;
File file = new File(realpath);
WritableWorkbook wwb = Workbook.createWorkbook(file);
WritableSheet sheet = wwb.createSheet(strFileName.substring(0,(strFileName.length()-4)),0);
sheet.setColumnView(0,35);
WritableFont font1 = new WritableFont(WritableFont.TIMES, 10);
WritableCellFormat format1 = new WritableCellFormat(font1);
format1.setAlignment(jxl.format.Alignment.CENTRE);
format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
format1.setBorder(Border.ALL, BorderLineStyle.THIN);
Label labeldate = new Label(0,1,"报表生成时间:"+date,format1);
Label label1 = new Label(0,2,"报送机构名称",format1);
Label label2 = new Label(1,2,"报送年度",format1);
Label label3 = new Label(2,2,"报送期数",format1);
Label label4 = new Label(3,2,"报表总数",format1);
Label label5 = new Label(4,2,"未填报",format1);
Label label6 = new Label(5,2,"已填报",format1);
Label label7 = new Label(6,2,"已汇总",format1);
Label label8 = new Label(7,2,"已校验",format1);
Label label9 = new Label(8,2,"已复核",format1);
Label label10 = new Label(9,2,"被汇总",format1);
Label label11 = new Label(10,2,"已审核",format1);
sheet.addCell(labeldate);
sheet.addCell(label1);
sheet.addCell(label2);
sheet.addCell(label3);
sheet.addCell(label4);
sheet.addCell(label5);
sheet.addCell(label6);
sheet.addCell(label7);
sheet.addCell(label8);
sheet.addCell(label9);
sheet.addCell(label10);
sheet.addCell(label11);
int row = 3;
//int column = 0;
for(Iterator iterator = list.iterator();iterator.hasNext();)
{
reportListFormExcel = new ReportListForm();
reportListFormExcel = (ReportListForm)iterator.next();
Label labelA = new Label(0,row,reportListFormExcel.getOrgName(),format1);
Label labelB = new Label(1,row,reportListFormExcel.getSelectYear(),format1);
Label labelC = new Label(2,row,reportListFormExcel.getSelectMonth(),format1);
Label labelD = new Label(3,row,String.valueOf(reportListFormExcel.getIntReportCount()),format1);
Label labelE = new Label(4,row,String.valueOf(reportListFormExcel.getStatusType_1()),format1);
Label labelF = new Label(5,row,String.valueOf(reportListFormExcel.getStatusType_2()),format1);
Label labelG = new Label(6,row,String.valueOf(reportListFormExcel.getStatusType_3()),format1);
Label labelH = new Label(7,row,String.valueOf(reportListFormExcel.getStatusType_4()),format1);
Label labelI = new Label(8,row,String.valueOf(reportListFormExcel.getStatusType_5()),format1);
Label labelJ = new Label(9,row,String.valueOf(reportListFormExcel.getStatusType_6()),format1);
Label labelM = new Label(10,row,String.valueOf(reportListFormExcel.getStatusType_7()),format1);
sheet.addCell(labelA);
sheet.addCell(labelB);
sheet.addCell(labelC);
sheet.addCell(labelD);
sheet.addCell(labelE);
sheet.addCell(labelF);
sheet.addCell(labelG);
sheet.addCell(labelH);
sheet.addCell(labelI);
sheet.addCell(labelJ);
sheet.addCell(labelM);
row += 1;
}
sheet.setProtected(true);
wwb.setProtected(true);
wwb.write();
wwb.close();
reportListForm.setSelectYear(String.valueOf(selectYear));
reportListForm.setSelectMonth(String.valueOf(selectMonth));
String downloadpath = request.getContextPath()+"\\generatereport\\"+strFileName;
try
{
下载Excel文件...
response.sendRedirect(downloadpath);
return null;
}catch(IOException ex)
{
ex.printStackTrace();
}
这么简单的问题怎么就没有人会呢??
强调一点:我要把返回来的数据集合直接写在本地excel文件里面不需要在服务器端
用PrintWriter怎么写excel zxm_dgcstars() 能仔细说下吗?
再次感谢各位的帮忙!哈哈