wicket框架下如何将表格数据导出Excel
2017-06-07 14:05
459 查看
将页面一的表格导出Excel,需要专门写一个Excel类和几个附属操作类,同时,在页面一的java代码里面写一个方法,此过程比较复杂,不过大部分代码copy就可以用,只需要改自己要替换的内容就可以了。
java代码如下:
首先是方法的创建
Excel类的创建
同时,还要写三个操作类
第一个操作类:
第二个操作类:
第三个操作类:
java代码如下:
首先是方法的创建
public void createExcel(){ //创建Excel类的对象,可以自定义带参构造,传入参数 //我的项目里传入了三个参数,大家可以参考自己的需求 //selectedYear,selectedMonth,monthDay final 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; } }
相关文章推荐
- C#中数据库数据如何导出至Excel表格
- C#后台制作之数据库(二、如何清除显示以及将数据库数据导出到excel表格文件中)
- laravel框架实现excel表格数据导入导出-php
- c#如何实现把datagridview里的数据导出到Excel里
- 如何将datagridview中的数据导出到Excel中?
- 从页面表格导出数据到Excel
- Asp.Net中如何将数据导出到excel
- 表格控件(GridView)数据格式化导出到Excel并下载.
- C#如何读取Excel表格数据并显示到GridView控件
- 以实例说明如何使用C#从数据库中提取数据,按要求自动生成定制的Excel表格?
- 把DataSet所有数据表导出到Excel表格文件(在前人基础上只是稍作了一下修改)
- 用php+MSSQL 开发的,如何将查询的数据导出到EXCEL中.
- C#中怎么从如何将DataGridView中的数据导出到Excel中
- Asp.Net中如何将数据导出到excel
- 如何将datagridview中的数据导出到Excel中
- 如何将VB中的数据导出excel,word中去!
- 将asp的表格中的数据导出到Excel
- 水晶报表如何完美导出一个Excel表格
- 在winform开发中如何把datagrid里面的数据导出成EXCEL文件
- 如何将表中的数据导出到电子表格中