wicket框架下如何将表格数据导出Excel
来源:互联网 发布:编程打印菱形 编辑:程序博客网 时间:2024/05/20 08:22
将页面一的表格导出Excel,需要专门写一个Excel类和几个附属操作类,同时,在页面一的java代码里面写一个方法,此过程比较复杂,不过大部分代码copy就可以用,只需要改自己要替换的内容就可以了。
java代码如下:
首先是方法的创建
public void createExcel(){//创建Excel类的对象,可以自定义带参构造,传入参数//我的项目里传入了三个参数,大家可以参考自己的需求//selectedYear,selectedMonth,monthDayfinal ExportPersonalPageExcel excelExport = new ExportPersonalPageExcel(selectedYear,selectedMonth,monthDay);//国际化文件,里面是自定义中文索引,nav.report.userWorkday的内容为导出Excel的文件名String filename =new ResourceModel("nav.report.userWorkday").getObject()+".xls";//通过数据库查询将结果放入集合中(此步骤只是为了说明要获取数据,里面的集合泛型和数据获取方法不讨论,大家根据自己需求设计)final List<PersonalProElement> personalProElements = personalservice.getResult(selectedYear,selectedMonth,monthDay);getRequestCycle().scheduleRequestHandlerAfterCurrent(new ExcelRequestHandler(filename, new Function<byte[]>() { @Override public byte[] apply() { return excelExport.getExcelData(personalProElements); } }));}
Excel类的创建
public class ExportPersonalPageExcel { private List<PersonalProElement> list; private HSSFRow hssf_w_r = null;//创建一行 private HSSFCell hssf_w_c = null;//每个单元格 HSSFWorkbook hssf_w_wk = null; HSSFSheet hssf_w_s = null; int j = 0; private Integer selectedYear; private Integer selectedMonth; private int monthday; public ExportPersonalPageExcel(Integer selectedYear,Integer selectedMonth,int monthday){ this.selectedYear=selectedYear; this.selectedMonth=selectedMonth; this.monthday=monthday; } public byte[] getExcelData(List<PersonalProElement> list) { this.list = list; ExcelWorkbook workbook = createWorkbook(); try { return PoiUtil.getWorkbookAsBytes(workbook); } catch (IOException e) { return new byte[0]; } } private ExcelWorkbook createWorkbook() { ExcelWorkbook workbook = new ExcelWorkbook(); Excelbookshell.setExcelbook("your_name"); List<String> head = new ArrayList<String>(); //设计Excel的表头名称,同样用的是国际化文件 head.add(new ResourceModel("daysQuery.table.project").getObject()); head.add(new ResourceModel("daysQuery.stage").getObject()); head.add(new ResourceModel("printMonth.help.header").getObject()); head.add(new ResourceModel("op.lock.admin.affectedUsers.name.label").getObject()); head.add(new ResourceModel("personProject.trueWorkDay").getObject()); head.add(new ResourceModel("personProject.resources").getObject()); try { hssf_w_s = workbook.createSheet(new ResourceModel("nav.report.userWorkday").getObject()); //填写内容 int col_count = 0; int row_count = 0; row_count = list.size(); col_count = head.size(); //标题 int titleRows = 0; //标题占据的行数 hssf_w_r = hssf_w_s.createRow(0); //第一行写入标题行 hssf_w_r = hssf_w_s.createRow(0+titleRows); for(int i = 0; i < col_count; i++){ hssf_w_c = hssf_w_r.createCell((short)i); hssf_w_c.setCellType(HSSFCell.CELL_TYPE_STRING); HSSFRichTextString hssfString = new HSSFRichTextString(head.get(i)); hssf_w_c.setCellValue(hssfString);// hssf_w_s.autoSizeColumn((short)i); } //第二行开始写入数据 hssf_w_s.setColumnWidth(0,5000); hssf_w_s.setColumnWidth(1,5000); hssf_w_s.setColumnWidth(2,5000); hssf_w_s.setColumnWidth(3,16000); hssf_w_s.setColumnWidth(4,5000); hssf_w_s.setColumnWidth(5,5000); //遍历表格的每一行,依次写入数据 for(int i = 1; i <= row_count; i++){ hssf_w_r = hssf_w_s.createRow(i+titleRows); PersonalProElement element = list.get(i-1); //大家根据自己传过来的集合取出对象来get出属性填充每一行数据 setStringStyle(element.getProject()); setStringStyle(element.getProjectStage(); } } catch (Exception e) { e.printStackTrace(); } return workbook; } private void setStringStyle(String value) { hssf_w_c = hssf_w_r.createCell((short)j); j++; hssf_w_c.setCellType(HSSFCell.CELL_TYPE_STRING); if(value==null) { value=""; } HSSFRichTextString hssfString = new HSSFRichTextString(value); hssf_w_c.setCellValue(hssfString); }
同时,还要写三个操作类
第一个操作类:
public class ExcelWorkbook { private static final String FONT_NAME = "Arial"; private Map<CellStyle, HSSFCellStyle> pregeneratedStyles; private HSSFWorkbook workbook; private HSSFWorkbook workbook1; public ExcelWorkbook() { init(); } private void init() { workbook = new HSSFWorkbook(); pregenerateStyles(workbook); } private void pregenerateStyles(HSSFWorkbook workbook) { pregeneratedStyles = new HashMap<CellStyle, HSSFCellStyle>(); CellStyle[] styleses = CellStyle.values(); HSSFFont font = workbook.createFont(); font.setFontName(FONT_NAME); for (CellStyle stylese : styleses) { HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setFont(font); stylese.apply(workbook, cellStyle); pregeneratedStyles.put(stylese, cellStyle); } } public HSSFCellStyle getCellStyle(CellStyle forCellStyle) { return pregeneratedStyles.get(forCellStyle); } public HSSFSheet createSheet(String sheetName) { return workbook.createSheet(sheetName); } public HSSFSheet createSheet1(String sheetName) { return workbook.createSheet(sheetName); } public int addPicture(byte[] image, int imageType) { return workbook.addPicture(image, imageType); } public void write(ByteArrayOutputStream output) throws IOException { workbook.write(output); }}
第二个操作类:
public class PoiUtil{ public static byte[] getWorkbookAsBytes(ExcelWorkbook workbook) throws IOException { ByteArrayOutputStream output = new ByteArrayOutputStream(); workbook.write(output); return output.toByteArray(); } public static int getImageType(String type) { if (type.equalsIgnoreCase("png")) { return HSSFWorkbook.PICTURE_TYPE_PNG; } else { return HSSFWorkbook.PICTURE_TYPE_JPEG; } }}
第三个操作类:
public class Excelbookshell { private static String Excelbook =""; public static String getExcelbook() { return Excelbook; } public static void setExcelbook(String excelbook) { Excelbook = excelbook; }}
阅读全文
2 0
- wicket框架下如何将表格数据导出Excel
- 将数据库数据导出至Excel表格
- 在ssh框架下将数据生成Excel文件导出
- 如何将数据导出成EXCEL文件
- 如何将mysql数据导出成excel
- 将表格中的数据导出到EXCEL表中的
- 将数据库的数据导出到excel表格中。
- Java将数据导出到excel表格中
- 用php将数据库中数据导出成excel表格
- .net 将数据库中的数据导出到Excel表格中
- NetBeans 将表格 的数据导出到 excel
- 将Excel表格中的数据导出到xml文件中
- php 将数据 以excel 表格的形式导出
- 将datagrid表格数据导出为Excel(动态列)
- JFianl 实现将数据库的数据导出excel表格
- 使用NPOI将数据用Excel表格导出
- 将Html中表格数据导出为Excel
- 如何将数据表导出备份到excel表格
- spark streaming 写hdfs问题
- ubuntu下解压缩zip,tar,tar.gz和tar.bz2文件
- 解决eclipse中的项目没有web工程标志的小圆球图标
- declare-styleable的详细用法
- CentOS6.5下RabbitMQ安装
- wicket框架下如何将表格数据导出Excel
- MySQL
- android studio 3.0 使用Kotlin抛弃findViewById()
- android 中uri.parse()各种用法
- 现代化医院PACS/RIS系统概述
- java websocket简单实例绝对可用
- HTML5本地存储详解
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之一
- linux HID驱动分析