ssh导入导出数据 表格

来源:互联网 发布:java判断字符串不相等 编辑:程序博客网 时间:2024/04/30 11:32
excel基础元素

工作簿

工作表(属于工作簿)

行(属于工作表)

单元格(属于行;由行和列确定)


-------------操作excel

1、创建/读取工作簿 HSSFWorkBook(-07)   XSSFWorkBook(07-)  大批量SXSSFWorkBook

2、创建/读取工作表

3、创建/读取行

4、创建/读取单元格



-----------excel样式

合并单元格对象(CellRangeAddress)属于工作簿;运用于工作表

CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol) 起始行号,结束行号,起始列号,结束列号

样式是属于工作簿的;运用于单元格

字体是属于工作簿的;加载于样式;通用样式运用于单元格



JSP代码

 

//导出用户到表格

functiondoExportExcel(){window.open("${basePath}nsfw/user_exportExcel.action");

}

<input type="button" value="导出" class="s_button" onclick="doExportExcel()"/> 

Action

//导入文件

private File userExcel;//文件"userExcel"

private String userExcelContentType;//文件类型

private String userExcelFileName;// 文件名称

Get Set 方法

//导出用户到表格public void exportExcel(){try {//1 确定需要导出的数据 List<User> userList = userService.findObjects();if(userList!=null){//2 设置响应信息HttpServletResponse response = ServletActionContext.getResponse();//2.1 设置响应类型response.setContentType("application/x-execl");//2.2 设置以下载方式打开文件response.setHeader("Content-Disposition", "attachment;filename="+new String("用户列表.xls".getBytes(),"ISO-8859-1") );//2.3 获得输出流OutputStream outputStream = response.getOutputStream();//3 导出userService.exportExcel(userList,outputStream);if(outputStream != null){outputStream.close();}}} catch (Exception e) {e.printStackTrace();}}

service

//导出用户列表到表格
@Override
public void exportExcel(List<User> userList, OutputStream outputStream) {
ExcelUtil.exportExcel(userList, outputStream);
}

ExcelUtil 

public class ExcelUtil {/** * 导出用户列表到表格  * @param userList 参数为用户集合列表 * @param outputStream 参数为输出流 */public static void exportExcel(List<User> userList, OutputStream outputStream) {try {//1  创建工作薄HSSFWorkbook workBook = new HSSFWorkbook();//1.1  创建合并单元格对象 CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 0, 4);//2 创建工作表HSSFSheet sheet = workBook.createSheet();//2.1 加载合并单元格对象sheet.addMergedRegion(cellRangeAddress);//3 创建行 //3.1头标题行HSSFRow rowHead = sheet.createRow(0);HSSFCell cellHead = rowHead.createCell(0);cellHead.setCellValue("用户列表");//3.1.3将设置好的样式添加到头标题行cellHead.setCellStyle( getStyle(workBook,(short) 16));//3.2 标题行HSSFRow rowColumn = sheet.createRow(1);//3.2.1 标题数组String[] title={"用户名","账号","所属部门","性别","电子邮箱"};for(int i=0 ; i< title.length;i++){//遍历数组HSSFCell cellColumn = rowColumn.createCell(i);//3.2.2 调用方法 设置标题行样式cellColumn.setCellStyle(getStyle(workBook,(short) 12));//3.2.3 设置标题cellColumn.setCellValue(title[i]);}//4 操作单元格if(userList != null){for (int j=0;j<userList.size();j++) {HSSFRow row = sheet.createRow(j+2);row.createCell(0).setCellValue(userList.get(j).getName());row.createCell(1).setCellValue(userList.get(j).getAccount());row.createCell(2).setCellValue(userList.get(j).getDept());row.createCell(3).setCellValue(userList.get(j).isGender()?"男":"女");row.createCell(4).setCellValue(userList.get(j).getEmail());}}        sheet.autoSizeColumn(( short ) 4); // 调整第五列宽度 邮箱列//5、输出workBook.write(outputStream);workBook.close();} catch (Exception e) {e.printStackTrace();}}private static HSSFCellStyle getStyle(HSSFWorkbook workBook,short fontSize){HSSFCellStyle style = workBook.createCellStyle();//3.1.1设置头标题行居中style.setAlignment(HSSFCellStyle.ALIGN_CENTER);style.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);//3.1.2设置头标题行字体加粗居中HSSFFont font = workBook.createFont();font.setBold(true);font.setFontHeightInPoints(fontSize);style.setFont(font);return style;}}









0 0