『壹』 java web poi如何按查询结果导出相应的Excel
package com.aerolink.aocs.util.fileUtil;import java.io.FileOutputStream;import java.io.IOException;import java.util.Calendar;import java.util.Date;//import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.CellStyle;import org.apache.poi.ss.util.CellRangeAddress;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFCellStyle;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class WriteExcelNew { /** * Excel文件 */ private XSSFWorkbook wb = null; /** * 输出Excel文件中的表对象 */ private XSSFSheet sheet = null; /** * 输出文件流 */ private FileOutputStream fileOut = null; /** * 输出文件名用户自定义 */ private String outputFilename = null; /** * 单元格样式 */ private XSSFCellStyle cellStyle = null; // private String newsheet = null; //输出Excel文件中的表名用户自定义 /** * 行 */ private XSSFRow row=null; /** * */ private int rowNumber=-1; /** * @param outputFilename * @param newsheet */ public WriteExcelNew(String outputFilename, String newsheet) { wb = new XSSFWorkbook(); //wb.setSheetName(1, "qwe");//设置第一张表的名称 sheet = wb.createSheet(newsheet); //sheet.setColumnWidth(1, 40);//第一行 列宽 this.outputFilename = outputFilename; // this.newsheet = newsheet; } /** * <p> * Description:exportToExcelFile(short rownum,short cellnum,int value)方法: * </p> * <p> * 将int数据写入Execl文件的表中 * </p> * * @param rownum * @param cellnum * @param value */ public void exportToExcelFile(int rownum, int cellnum, int value) { if(rowNumber==-1){ //在poi3.8版本中,不这样做,只能写入最后一个单元格 rowNumber=rownum; row = sheet.createRow(rownum); }else if(rowNumber!=rownum){ rowNumber=rownum; row = sheet.createRow(rownum); } //row.setHeight((short)50);//行高 XSSFCell cell = row.createCell(cellnum); cell.setCellValue(value); if(cellStyle==null){ setCellStyle("center","center","",false); } cell.setCellStyle(cellStyle); } /** * <p> * Description:exportToExcelFile(short rownum,short cellnum,String value)方法: * </p> * <p> * 将String数据写入Execl文件的表中 * </p> * * @param rownum * @param cellnum * @param value */ public void exportToExcelFile(int rownum, int cellnum, String value) { if(rowNumber==-1){ //在poi3.8版本中,不这样做,只能写入最后一个单元格 rowNumber=rownum; row = sheet.createRow(rownum); }else if(rowNumber!=rownum){ rowNumber=rownum; row = sheet.createRow(rownum); } XSSFCell cell = row.createCell(cellnum); cell.setCellValue(value); if(cellStyle==null){ setCellStyle("center","center","",false); } cell.setCellStyle(cellStyle); }
『贰』 javaweb多个用户同时导出数据到同一个文件会冲突吗,怎么避免呢
仅仅是读操作不会有什么问题的,如果是写文件操作就要加锁了,
『叁』 java web 导出excel文件的方式
1微软提供的PAI方式 ;优点是:API比较全,可以实现excel提供的各种需求;缺点:和office框架绑定,服务器端还需要配置com组件,有时配置了也调不了,原因不清; 导出的速度慢;2微软提供的VSTO:基于excel上开发缺点是:不好嵌入到web中 ;3种是poi,apache提供的第三方包:优点:速度快;缺点:支持office版本比较有限制;4openxml4j;优点:速度快支持office2012,版本比较高
『肆』 java web导出excel 数据源问题
第一,页面点击导出按钮,调用java后台查询数据。第二,将查询出数据,进行Excel文件的写入。第三,成功,页面提示导出成功。 失败,提示导出失败。就这么简单,楼主不要想的太复杂了。
『伍』 javaweb项目导出exce文件
java导出Excel需要用到poi的jar包,
//第一步,创建一个webbook,对应一个Excel文件HSSFWorkbookwb=newHSSFWorkbook();//第二步,在webbook中添加一个sheet,对应Excel文件中的sheetHSSFSheetsheet=wb.createSheet("学生表一");//第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制shortHSSFRowrow=sheet.createRow((int)0);//第四步,创建单元格,并设置值表头设置表头居中HSSFCellStylestyle=wb.createCellStyle();style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//创建一个居中格式HSSFCellcell=row.createCell((short)0);cell.setCellValue("学号");cell.setCellStyle(style);cell=row.createCell((short)1);cell.setCellValue("姓名");cell.setCellStyle(style);cell=row.createCell((short)2);cell.setCellValue("年龄");cell.setCellStyle(style);cell=row.createCell((short)3);cell.setCellValue("生日");cell.setCellStyle(style);//第五步,写入实体数据实际应用中这些数据从数据库得到,Listlist=CreateSimpleExcelToDisk.getStudent();for(inti=0;i<list.size();i++){row=sheet.createRow((int)i+1);Studentstu=(Student)list.get(i);//第四步,创建单元格,并设置值row.createCell((short)0).setCellValue((double)stu.getId());row.createCell((short)1).setCellValue(stu.getName());row.createCell((short)2).setCellValue((double)stu.getAge());cell=row.createCell((short)3);cell.setCellValue(newSimpleDateFormat("yyyy-mm-dd").format(stu.getBirth()));}//第六步,将文件存到指定位置try{FileOutputStreamfout=newFileOutputStream("E:/students.xls");wb.write(fout);fout.close();}catch(Exceptione){e.printStackTrace();}}
『陆』 java excel导出到用户本地
一般来说做下载功能的确是先导到服务器的一个临时目录上的,然后再用一段代码把这个excel读出来,并且输出到response流里面去,给你一段可以用的代码
//——————————//step1.保存一个临时excel到temp目录下//——————————//这部分自己实现,我相信你已经实现了//假设你已经实现了保存一个excel到一个临时文件夹里面去//并且已经生成了一个File指向这个临时的excel,名叫exportFile//——————————- //step2.弹出下载对话框 //——————————- if(exportFile==null){ logger.error("生成excel错误!exportFile为空"); return; } //先建立一个文件读取流去读取这个临时excel文件 FileInputStreamfs=null; try{ fs=newFileInputStream(exportFile); }catch(FileNotFoundExceptione){ logger.error("生成excel错误!"+exportFile+"不存在!",e); return; } //设置响应头和保存文件名 HttpServletResponseresponse=ServletActionContext.getResponse(); //这个一定要设定,告诉浏览器这次请求是一个下载的数据流 response.setContentType("APPLICATION/OCTET-STREAM"); try{ //这边的"采购部门本月采购报表.xls"替换成你自己要显示给用户的文件名 excelName=URLEncoder.encode("采购部门本月采购报表.xls","UTF-8"); }catch(){ logger.error("转换excel名称编码错误!",e1); } response.setHeader("Content-Disposition","attachment;filename=""+excelName+"""); //写出流信息 intb=0; try{ //这里的response就是你servlet的那个传参进来的response PrintWriterout=response.getWriter(); while((b=fs.read())!=-1){ out.write(b); } fs.close(); out.close(); logger.debug(sheetName+"文件下载完毕."); }catch(Exceptione){ logger.error(sheetName+"下载文件失败!.",e); }
把这段代码放到你的servlet的最后一部分
『柒』 javaWEB项目怎么输出文件到项目指定目录下
String contextRoot = request.getContextPath();//通过request取上下文目录public static final String PROCESSPATH_JILIANG=contextRoot+"processDefinitionFile\\process.xml"
『捌』 java web项目: 一个excel文件以二进制的形式存在数据库中 如何将它导出并
poi读取即可。 /** * 读取Excel数据内容 * @param InputStream * @return Map 包含单元格数据内容的Map对象 */ public Map<Integer, String> readExcelContent(InputStream is) { Map<Integer, String> content = new HashMap<Integer, String>(); String str = ""; try { fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); } catch (IOException e) { e.printStackTrace(); } sheet = wb.getSheetAt(0); // 得到总行数 int rowNum = sheet.getLastRowNum(); row = sheet.getRow(0); int colNum = row.getPhysicalNumberOfCells(); // 正文内容应该从第二行开始,第一行为表头的标题 for (int i = 1; i <= rowNum; i++) { row = sheet.getRow(i); int j = 0; while (j < colNum) { // 每个单元格的数据内容用"-"分割开,以后需要时用String类的replace()方法还原数据 // 也可以将每个单元格的数据设置到一个javabean的属性中,此时需要新建一个javabean // str += getStringCellValue(row.getCell((short) j)).trim() + // "-"; str += getCellFormatValue(row.getCell((short) j)).trim() + " "; j++; } content.put(i, str); str = ""; } return content; }
『玖』 请教java web应用导出文件
修改你后台的数据导出方法,如果有数据的话就直接导出,没数据的话就返回错误信息到前端,提示没数据。
『拾』 在web项目中,如何用java代码实现文件、数据,等等的导入、导出求助,菜鸟级。。。 万分感谢!
给你个小例子,你参考下import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Admin { public static void main(String… args) { Scanner in = new Scanner(System.in); System.out.print("请输入:"); List result = new ArrayList(); for (int i = 0; i < 3; i++) { result.add(in.next()); } String file = "d:/java.txt"; try { write(file, result); read(file); } catch (IOException e) { e.printStackTrace(); } } private static void write(String file, List result) throws IOException { FileWriter bw = new FileWriter(new File(file)); for (int i = 0; i < result.size(); i++) { bw.write(String.valueOf(result.get(i)) + "\r\n"); } bw.close(); } private static void read(String fileName) { File file = new File(fileName); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); String tempString = null; while ((tempString = reader.readLine()) != null) { System.out.println(tempString); } reader.close(); } catch (IOException e) { e.printStackTrace(); return; } }}