POI 导出excel
有道笔记地址:http://note.youdao.com/share/?id=521dd834dba53cc4a599ad69f9842dbc&type=note
样式
package com.wondersgroup.qdyth.m01.common.service.impl; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.hssf.util.Region; import org.apache.struts2.ServletActionContext; import com.wondersgroup.qdyth.m01.common.dao.CommonDao; import com.wondersgroup.qdyth.m01.common.model.bo.NetDataMain; import com.wondersgroup.qdyth.m01.common.model.dto.CodeType; import com.wondersgroup.qdyth.m01.common.model.vo.FileExportVO; import com.wondersgroup.qdyth.m01.common.service.CommonExcelService; import com.wondersgroup.uaas.LoginUtil; import com.wondersgroup.wssip.commons.dao.CommonJdbcDaoUtils; public class CommonExcelServiceImpl implements CommonExcelService{ private CommonDao commonDao; public CommonDao getCommonDao() { return commonDao; } public void setCommonDao(CommonDao commonDao) { this.commonDao = commonDao; } public String exportExcel(String titlename, List<String[]> titles, List<NetDataMain> mains) throws IOException{ String sql = "select aaa102,aaa103 from aa10web where aaa100=?"; CodeType code1 = CommonJdbcDaoUtils.getFirst(sql, CodeType.class, "DOWNPATH"); HttpServletRequest request = ServletActionContext.getRequest(); //int random = (int)(Math.random()*1000); /*SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String dates = sdf.format(new Date());*/ if((mains==null||mains.size()==0)&&(titles==null||titles.size()==0)) return null; String aab001 = LoginUtil.getLoginName(request); String writeName = code1.getAaa103()+aab001+".xls"; //FileInputStream fileInputStream = new FileInputStream(readName); //POIFSFileSystem fis = new POIFSFileSystem(fileInputStream); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); //表头 sheet.addMergedRegion(new Region(0,(short)0,0,(short)(titles.size()-1))); HSSFRow noe = sheet.createRow(0); HSSFCell eon = noe.createCell((short)0); eon.setCellValue(new HSSFRichTextString(titlename)); HSSFCellStyle styletitle = wb.createCellStyle(); styletitle.setLeftBorderColor(HSSFColor.BLACK.index); styletitle.setBorderLeft(HSSFCellStyle.BORDER_THIN); styletitle.setRightBorderColor(HSSFColor.BLACK.index); styletitle.setBorderRight(HSSFCellStyle.BORDER_THIN); styletitle.setBottomBorderColor(HSSFColor.BLACK.index); styletitle.setBorderBottom(HSSFCellStyle.BORDER_THIN); styletitle.setBorderTop(HSSFCellStyle.BORDER_THIN); styletitle.setAlignment(HSSFCellStyle.ALIGN_CENTER); HSSFFont font = wb.createFont(); font.setFontHeightInPoints((short)24); styletitle.setFont(font); eon.setCellStyle(styletitle); //标题栏样式 HSSFCellStyle styleTitle = wb.createCellStyle(); styleTitle.setLeftBorderColor(HSSFColor.BLACK.index); styleTitle.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleTitle.setRightBorderColor(HSSFColor.BLACK.index); styleTitle.setBorderRight(HSSFCellStyle.BORDER_THIN); styleTitle.setBottomBorderColor(HSSFColor.BLACK.index); styleTitle.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleTitle.setBorderTop(HSSFCellStyle.BORDER_THIN); styleTitle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); styleTitle.setFillForegroundColor(HSSFColor.GREY_50_PERCENT.index); styleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //标题栏 HSSFRow rowTtile = sheet.createRow(1); for(int j=0;j<titles.size();++j){ HSSFCell cell = rowTtile.createCell((short)j); cell.setCellStyle(styleTitle); short width = 0; if(titles.get(j).length==2){ width = (short)(Integer.parseInt(titles.get(j)[1])*100); }else{ short w = (short)(titles.get(j)[0].getBytes().length*300); if(w>width){ sheet.setColumnWidth((short)j,w); width = w; } } cell.setCellValue(new HSSFRichTextString(titles.get(j)[0])); sheet.setColumnWidth((short)j,width); } //设置样式 HSSFDataFormat format = wb.createDataFormat(); HSSFCellStyle styleCell1 = wb.createCellStyle(); styleCell1.setLeftBorderColor(HSSFColor.BLACK.index); styleCell1.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleCell1.setRightBorderColor(HSSFColor.BLACK.index); styleCell1.setBorderRight(HSSFCellStyle.BORDER_THIN); styleCell1.setBottomBorderColor(HSSFColor.BLACK.index); styleCell1.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleCell1.setBorderTop(HSSFCellStyle.BORDER_THIN); styleCell1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); styleCell1.setFillForegroundColor(HSSFColor.PALE_BLUE.index); styleCell1.setDataFormat(format.getFormat("@")); HSSFCellStyle styleCell2 = wb.createCellStyle(); styleCell2.setLeftBorderColor(HSSFColor.BLACK.index); styleCell2.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleCell2.setRightBorderColor(HSSFColor.BLACK.index); styleCell2.setBorderRight(HSSFCellStyle.BORDER_THIN); styleCell2.setBottomBorderColor(HSSFColor.BLACK.index); styleCell2.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleCell2.setBorderTop(HSSFCellStyle.BORDER_THIN); styleCell2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); styleCell2.setFillForegroundColor(HSSFColor.WHITE.index); styleCell2.setDataFormat(format.getFormat("@")); for(int i=0;i<mains.size();++i){ HSSFRow row = sheet.createRow(i+2); //设置行高 row.setHeight((short)270); NetDataMain main = mains.get(i); for(int j=0;j<titles.size();++j){ HSSFCell cell = row.createCell((short)j); cell.setCellType(HSSFCell.CELL_TYPE_STRING); if(i%2==0){ cell.setCellStyle(styleCell1); }else{ cell.setCellStyle(styleCell2); } if(j==0) cell.setCellValue(new HSSFRichTextString(main.getData01())); else if(j==1) cell.setCellValue(new HSSFRichTextString(main.getData02())); else if(j==2) cell.setCellValue(new HSSFRichTextString(main.getData03())); else if(j==3) cell.setCellValue(new HSSFRichTextString(main.getData04())); else if(j==4) cell.setCellValue(new HSSFRichTextString(main.getData05())); else if(j==5) cell.setCellValue(new HSSFRichTextString(main.getData06())); else if(j==6) cell.setCellValue(new HSSFRichTextString(main.getData07())); else if(j==7) cell.setCellValue(new HSSFRichTextString(main.getData08())); else if(j==8) cell.setCellValue(new HSSFRichTextString(main.getData09())); else if(j==9) cell.setCellValue(new HSSFRichTextString(main.getData10())); else if(j==10) cell.setCellValue(new HSSFRichTextString(main.getData11())); else if(j==11) cell.setCellValue(new HSSFRichTextString(main.getData12())); else if(j==12) cell.setCellValue(new HSSFRichTextString(main.getData13())); else if(j==13) cell.setCellValue(new HSSFRichTextString(main.getData14())); else if(j==14) cell.setCellValue(new HSSFRichTextString(main.getData15())); else if(j==15) cell.setCellValue(new HSSFRichTextString(main.getData16())); else if(j==16) cell.setCellValue(new HSSFRichTextString(main.getData17())); else if(j==17) cell.setCellValue(new HSSFRichTextString(main.getData18())); else if(j==18) cell.setCellValue(new HSSFRichTextString(main.getData19())); else if(j==19) cell.setCellValue(new HSSFRichTextString(main.getData20())); else if(j==20) cell.setCellValue(new HSSFRichTextString(main.getData21())); else if(j==21) cell.setCellValue(new HSSFRichTextString(main.getData22())); else if(j==22) cell.setCellValue(new HSSFRichTextString(main.getData23())); else if(j==23) cell.setCellValue(new HSSFRichTextString(main.getData24())); else if(j==24) cell.setCellValue(new HSSFRichTextString(main.getData25())); else if(j==25) cell.setCellValue(new HSSFRichTextString(main.getData26())); else if(j==26) cell.setCellValue(new HSSFRichTextString(main.getData27())); else if(j==27) cell.setCellValue(new HSSFRichTextString(main.getData28())); else if(j==28) cell.setCellValue(new HSSFRichTextString(main.getData29())); else if(j==29) cell.setCellValue(new HSSFRichTextString(main.getData30())); //String ss = cell.getRichStringCellValue().getString(); //设置列宽 /*if(ss.length()>0){ short w = (short)(ss.getBytes().length*300);; if(w>width){ sheet.setColumnWidth((short)j,w); width = w; } }*/ } } File file =new File(code1.getAaa103()); file.mkdirs(); FileOutputStream fos = new FileOutputStream(writeName); wb.write(fos); fos.close(); //fileInputStream.close(); return writeName; } public void exportExcel(String sql, List<String[]> titles,FileExportVO exportVO){ try { HttpServletRequest request = ServletActionContext.getRequest(); //String aab001 = LoginUtil.getLoginName(request); String filepath=exportExcel(exportVO.getFilename(), titles, commonDao.getExportData(sql)); exportVO.setFilepath(filepath); //exportVO.setFilename(exportVO.getFilename()+".xls");new String (s.getbytes(‘GBK’),'iso8859-1') exportVO.setFilename(new String((exportVO.getFilename()+".xls").getBytes("GBK"),"ISO8859-1")); } catch (IOException e) { e.printStackTrace(); } } }
导出demo
package com.common.excel.inport; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.hssf.util.Region; public class export { static List<beans> list; public export() { list=new ArrayList<beans>(); beans b; for(int i=0;i<10;i++){ b=new beans(); b.setAge("23"); b.setBirthday("199012232610"); b.setName("吴国志"); list.add(b); } } public static void exprot(){ HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); List<String[]> titles =new ArrayList<String[]>(); String[] ss={"姓名","年龄","出生日期"}; titles.add(new String[]{"姓名"}); titles.add(new String[]{"年龄"}); titles.add(new String[]{"出生日期"}); //表头 sheet.addMergedRegion(new Region(0,(short)0,0,(short)(ss.length-1))); HSSFRow noe = sheet.createRow(0); HSSFCell eon = noe.createCell((short)0); eon.setCellValue(new HSSFRichTextString("导出标题")); HSSFCellStyle styletitle = wb.createCellStyle(); styletitle.setLeftBorderColor(HSSFColor.BLACK.index); styletitle.setBorderLeft(HSSFCellStyle.BORDER_THIN); styletitle.setRightBorderColor(HSSFColor.BLACK.index); styletitle.setBorderRight(HSSFCellStyle.BORDER_THIN); styletitle.setBottomBorderColor(HSSFColor.BLACK.index); styletitle.setBorderBottom(HSSFCellStyle.BORDER_THIN); styletitle.setBorderTop(HSSFCellStyle.BORDER_THIN); styletitle.setAlignment(HSSFCellStyle.ALIGN_CENTER); HSSFFont font = wb.createFont(); font.setFontHeightInPoints((short)24); styletitle.setFont(font); eon.setCellStyle(styletitle); //标题栏样式 HSSFCellStyle styleTitle = wb.createCellStyle(); styleTitle.setLeftBorderColor(HSSFColor.BLACK.index); styleTitle.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleTitle.setRightBorderColor(HSSFColor.BLACK.index); styleTitle.setBorderRight(HSSFCellStyle.BORDER_THIN); styleTitle.setBottomBorderColor(HSSFColor.BLACK.index); styleTitle.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleTitle.setBorderTop(HSSFCellStyle.BORDER_THIN); styleTitle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); styleTitle.setFillForegroundColor(HSSFColor.GREY_50_PERCENT.index); styleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //标题栏 HSSFRow rowTtile = sheet.createRow(1); for(int j=0;j<titles.size();++j){ HSSFCell cell = rowTtile.createCell((short)j); cell.setCellStyle(styleTitle); short width = 0; if(titles.get(j).length==2){ width = (short)(Integer.parseInt(titles.get(j)[1])*100); }else{ short w = (short)(titles.get(j)[0].getBytes().length*300); if(w>width){ sheet.setColumnWidth((short)j,w); width = w; } } cell.setCellValue(new HSSFRichTextString(titles.get(j)[0])); sheet.setColumnWidth((short)j,width); } //设置样式 HSSFDataFormat format = wb.createDataFormat(); HSSFCellStyle styleCell1 = wb.createCellStyle(); styleCell1.setLeftBorderColor(HSSFColor.BLACK.index); styleCell1.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleCell1.setRightBorderColor(HSSFColor.BLACK.index); styleCell1.setBorderRight(HSSFCellStyle.BORDER_THIN); styleCell1.setBottomBorderColor(HSSFColor.BLACK.index); styleCell1.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleCell1.setBorderTop(HSSFCellStyle.BORDER_THIN); styleCell1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); styleCell1.setFillForegroundColor(HSSFColor.PALE_BLUE.index); styleCell1.setDataFormat(format.getFormat("@")); HSSFCellStyle styleCell2 = wb.createCellStyle(); styleCell2.setLeftBorderColor(HSSFColor.BLACK.index); styleCell2.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleCell2.setRightBorderColor(HSSFColor.BLACK.index); styleCell2.setBorderRight(HSSFCellStyle.BORDER_THIN); styleCell2.setBottomBorderColor(HSSFColor.BLACK.index); styleCell2.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleCell2.setBorderTop(HSSFCellStyle.BORDER_THIN); styleCell2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); styleCell2.setFillForegroundColor(HSSFColor.WHITE.index); styleCell2.setDataFormat(format.getFormat("@")); for(int i=0;i<list.size();++i){ HSSFRow row = sheet.createRow(i+2); //设置行高 row.setHeight((short)270); beans main = list.get(i); for(int j=0;j<titles.size();++j){ HSSFCell cell = row.createCell((short)j); cell.setCellType(HSSFCell.CELL_TYPE_STRING); if(i%2==0){ cell.setCellStyle(styleCell1); }else{ cell.setCellStyle(styleCell2); } if(j==0) cell.setCellValue(new HSSFRichTextString(main.getName())); else if(j==1) cell.setCellValue(new HSSFRichTextString(main.getAge())); else if(j==2) cell.setCellValue(new HSSFRichTextString(main.getBirthday())); //String ss = cell.getRichStringCellValue().getString(); //设置列宽 /*if(ss.length()>0){ short w = (short)(ss.getBytes().length*300);; if(w>width){ sheet.setColumnWidth((short)j,w); width = w; } }*/ } } File file =new File("c:/print/temp"); file.mkdirs(); FileOutputStream fos; try { fos = new FileOutputStream("c:/print/temp/测试.xls"); wb.write(fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("ok"); } public static void main(String[] args) { export e=new export(); e.exprot(); } }
test测试
package com.common.excel.inport; import java.io.File; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; public class importtest { public static void main(String[] args) throws BiffException, IOException { File newFile = new File("d:\\123.xls"); Workbook book = Workbook.getWorkbook(newFile) ; //取得第一个sheet Sheet sheet = book.getSheet(0); //取得行数 int rows = sheet.getRows(); System.out.println(rows); for(int i=0;i<rows;i++){ Cell [] cell = sheet.getRow(i); System.out.println(cell.length); for(int j=0; j<4; j++) { System.out.println(sheet.getCell(j, i).getContents()); } } } }
当一个男人什么都没有的时候,他该拿什么说爱呢,