JAVA实现数据库数据导入/导出到Excel(POI技术)
来源:互联网 发布:好看的推理小说知乎 编辑:程序博客网 时间:2024/05/20 02:28
准备工作:
1.导入POI包:POI下载地址:http://download.csdn.net/detail/zxm1306192988/9522142(重要)
如下
2.导入导出到Excel工具类ExcelUtil.java,封装了POI对Excel的操作
package net.dqsy.util;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import javax.swing.JOptionPane;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;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.HSSFCellUtil;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.CellStyle;import org.apache.poi.ss.usermodel.Font;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.util.CellRangeAddress;/** * 描述:Excel写操作帮助类 * * * */public class ExcelUtil { /** * 功能:创建HSSFSheet工作簿 * @param wb HSSFWorkbook * @param sheetName String * @return HSSFSheet */ public static HSSFSheet createSheet(HSSFWorkbook wb,String sheetName){ HSSFSheet sheet=wb.createSheet(sheetName); sheet.setDefaultColumnWidth(12); sheet.setGridsPrinted(false); sheet.setDisplayGridlines(false); return sheet; } /** * 功能:创建HSSFRow * @param sheet HSSFSheet * @param rowNum int * @param height int * @return HSSFRow */ public static HSSFRow createRow(HSSFSheet sheet,int rowNum,int height){ HSSFRow row=sheet.createRow(rowNum); row.setHeight((short)height); return row; } public static HSSFCell createCell0(HSSFRow row,int cellNum){ HSSFCell cell=row.createCell(cellNum); return cell; } /** * 功能:创建CELL * @param row HSSFRow * @param cellNum int * @param style HSSFStyle * @return HSSFCell */ public static HSSFCell createCell(HSSFRow row,int cellNum,CellStyle style){ HSSFCell cell=row.createCell(cellNum); cell.setCellStyle(style); return cell; } /** * 功能:创建CellStyle样式 * @param wb HSSFWorkbook * @param backgroundColor 背景色 * @param foregroundColor 前置色 * @param font 字体 * @return CellStyle */ public static CellStyle createCellStyle(HSSFWorkbook wb,short backgroundColor,short foregroundColor,short halign,Font font){ CellStyle cs=wb.createCellStyle(); cs.setAlignment(halign); cs.setVerticalAlignment(CellStyle.VERTICAL_CENTER); cs.setFillBackgroundColor(backgroundColor); cs.setFillForegroundColor(foregroundColor); cs.setFillPattern(CellStyle.SOLID_FOREGROUND); cs.setFont(font); return cs; } /** * 功能:创建带边框的CellStyle样式 * @param wb HSSFWorkbook * @param backgroundColor 背景色 * @param foregroundColor 前置色 * @param font 字体 * @return CellStyle */ public static CellStyle createBorderCellStyle(HSSFWorkbook wb,short backgroundColor,short foregroundColor,short halign,Font font){ CellStyle cs=wb.createCellStyle(); cs.setAlignment(halign); cs.setVerticalAlignment(CellStyle.VERTICAL_CENTER); cs.setFillBackgroundColor(backgroundColor); cs.setFillForegroundColor(foregroundColor); cs.setFillPattern(CellStyle.SOLID_FOREGROUND); cs.setFont(font); cs.setBorderLeft(CellStyle.BORDER_DASHED); cs.setBorderRight(CellStyle.BORDER_DASHED); cs.setBorderTop(CellStyle.BORDER_DASHED); cs.setBorderBottom(CellStyle.BORDER_DASHED); return cs; } /** * 功能:多行多列导入到Excel并且设置标题栏格式 */ public static void writeArrayToExcel(HSSFSheet sheet,int rows,int cells,Object [][]value){ Row row[]=new HSSFRow[rows]; Cell cell[]=new HSSFCell[cells]; for(int i=0;i<row.length;i++){ row[i]=sheet.createRow(i); for(int j=0;j<cell.length;j++){ cell[j]=row[i].createCell(j); cell[j].setCellValue(convertString(value[i][j])); } } } /** * 功能:多行多列导入到Excel并且设置标题栏格式 */ public static void writeArrayToExcel(HSSFWorkbook wb,HSSFSheet sheet,int rows,int cells,Object [][]value){ Row row[]=new HSSFRow[rows]; Cell cell[]=new HSSFCell[cells]; HSSFCellStyle ztStyle = (HSSFCellStyle)wb.createCellStyle(); Font ztFont = wb.createFont(); ztFont.setBoldweight(Font.BOLDWEIGHT_BOLD); //ztFont.setItalic(true); // 设置字体为斜体字 // ztFont.setColor(Font.COLOR_RED); // 将字体设置为“红色” ztFont.setFontHeightInPoints((short)10); // 将字体大小设置为18px ztFont.setFontName("华文行楷"); // 将“华文行楷”字体应用到当前单元格上 // ztFont.setUnderline(Font.U_DOUBLE); ztStyle.setFont(ztFont); for(int i=0;i<row.length;i++){ row[i]=sheet.createRow(i); for(int j=0;j<cell.length;j++){ cell[j]=row[i].createCell(j); cell[j].setCellValue(convertString(value[i][j])); if(i==0) cell[j].setCellStyle(ztStyle); } } } /** * 功能:合并单元格 * @param sheet HSSFSheet * @param firstRow int * @param lastRow int * @param firstColumn int * @param lastColumn int * @return int 合并区域号码 */ public static int mergeCell(HSSFSheet sheet,int firstRow,int lastRow,int firstColumn,int lastColumn){ return sheet.addMergedRegion(new CellRangeAddress(firstRow,lastRow,firstColumn,lastColumn)); } /** * 功能:创建字体 * @param wb HSSFWorkbook * @param boldweight short * @param color short * @return Font */ public static Font createFont(HSSFWorkbook wb,short boldweight,short color,short size){ Font font=wb.createFont(); font.setBoldweight(boldweight); font.setColor(color); font.setFontHeightInPoints(size); return font; } /** * 设置合并单元格的边框样式 * @param sheet HSSFSheet * @param ca CellRangAddress * @param style CellStyle */ public static void setRegionStyle(HSSFSheet sheet, CellRangeAddress ca,CellStyle style) { for (int i = ca.getFirstRow(); i <= ca.getLastRow(); i++) { HSSFRow row = HSSFCellUtil.getRow(i, sheet); for (int j = ca.getFirstColumn(); j <= ca.getLastColumn(); j++) { HSSFCell cell = HSSFCellUtil.getCell(row, j); cell.setCellStyle(style); } } } /** * 功能:将HSSFWorkbook写入Excel文件 * @param wb HSSFWorkbook * @param absPath 写入文件的相对路径 * @param wbName 文件名 */ public static void writeWorkbook(HSSFWorkbook wb,String fileName){ FileOutputStream fos=null; File f=new File(fileName); try { fos=new FileOutputStream(f); wb.write(fos); int dialog = JOptionPane.showConfirmDialog(null, f.getName()+"导出成功!是否打开?", "温馨提示", JOptionPane.YES_NO_OPTION); if (dialog == JOptionPane.YES_OPTION) { Runtime.getRuntime().exec("cmd /c start \"\" \"" + fileName + "\""); } } catch (FileNotFoundException e) { JOptionPane.showMessageDialog(null, "导入数据前请关闭工作表"); } catch ( Exception e) { JOptionPane.showMessageDialog(null, "没有进行筛选"); } finally{ try { if(fos!=null){ fos.close(); } } catch (IOException e) { } } } public static String convertString(Object value) { if (value == null) { return ""; } else { return value.toString(); } } }
3.导出Excel
JButton toExcelButton = new JButton("导出excel");toExcelButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stub File selectedFile = getSelectedFile(".xls"); if (selectedFile != null) { String path = selectedFile.getPath(); // System.out.println(path); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("试卷"); String[] n = { "题干", "A", "B", "C", "D", "Answer" }; Object[][] value = new Object[questionInfos.size() + 1][6]; for (int m = 0; m < n.length; m++) { value[0][m] = n[m]; } for (int i = 0; i < questionInfos.size(); i++) { value[i + 1][0] = questionInfos.get(i).getQuestion(); value[i + 1][1] = questionInfos.get(i).getA(); value[i + 1][2] = questionInfos.get(i).getB(); value[i + 1][3] = questionInfos.get(i).getC(); value[i + 1][4] = questionInfos.get(i).getD(); value[i + 1][5] = questionInfos.get(i).getAnswer(); } ExcelUtil.writeArrayToExcel(wb, sheet, questionInfos.size() + 1, 6, value); ExcelUtil.writeWorkbook(wb, path); }}});4.导入Excel
JButton fromExcelButton = new JButton("导入excel");fromExcelButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubFile selectedFile = getSelectedOpenFile(".xls"); if (selectedFile != null) { String path = selectedFile.getPath(); String result = "success"; try { // 创建对Excel工作簿文件的引用 HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream( path)); // 创建对工作表的引用。 // HSSFSheet sheet = workbook.getSheet("Sheet1"); HSSFSheet sheet = workbook.getSheetAt(0); int j = 1;//从第2行开始堵数据 // 第在excel中读取一条数据就将其插入到数据库中 while (j < sheet.getPhysicalNumberOfRows()) { HSSFRow row = sheet.getRow(j); QuestionInfo onequestioninfo = new QuestionInfo(null, null, null, null, null, null,GlobalInfo.selectedpaper); for (int i = 0; i <= 5; i++) { HSSFCell cell = row.getCell((short) i); if (i == 0) { onequestioninfo.setQuestion(cell.getStringCellValue()); } else if (i == 1){ onequestioninfo.setA(cell.getStringCellValue()); } else if (i == 2){ onequestioninfo.setB(cell.getStringCellValue()); } else if (i == 3){ onequestioninfo.setC(cell.getStringCellValue()); } else if (i == 4){ onequestioninfo.setD(cell.getStringCellValue()); } else if (i == 5){ onequestioninfo.setAnswer(cell.getStringCellValue()); } } j++; jdbc.addQuestionInfo(onequestioninfo); } } catch (FileNotFoundException e2) { // TODO Auto-generated catch block System.out.println("notfound"); e2.printStackTrace(); } catch (IOException e3) { // TODO Auto-generated catch block System.out.println(e3.toString()); e3.printStackTrace(); } }}});
0 0
- JAVA实现数据库数据导入/导出到Excel(POI技术)
- java poi实现数据库数据导出到excel
- poi实现数据库数据导出到excel
- POI 读取excel导入导出数据到数据库
- JAVA实现Excel导入/导出(POI)
- JAVA实现Excel导入/导出(POI)
- 导出数据库数据到excel表中(使用POI技术)
- POI 导入导出Excel文件到数据库
- POI 导入导出Excel文件到数据库
- POI导入导出Excel到数据库
- POI技术实现EXCEL的导入导出
- POI 导入导出Excel文件到数据库(转载)
- POI 导入导出Excel文件到数据库(转载)
- JAVA导入导出Excel【POI技术】
- POI实现数据从Excel导入到数据库中例子
- poi技术导出海量数据到excel
- java用poi从Excel导入数据到数据库
- 使用Java POI导入导出Excel数据
- 前言
- Github学习之GooeyMenu实现粘性菜单
- Struts中的OGNL表达式语言1/Struts标签与OGNL表达式语言实例演练2/Struts2常用标签总结3
- android客户端学习-listview的列表点击事件
- iOS基础开发-UI基础之UIScrollview
- JAVA实现数据库数据导入/导出到Excel(POI技术)
- SQL注入攻击
- Scroller平滑滚动
- R-CNN、Fast-R-CNN和Faster-R-CNN
- 取得IOS设备型号
- CodeForces 608A Saitama Destroys Hotel(水题)
- 串行程序并行化
- 团体程序设计天梯赛-练习集 L2-007 家庭房产
- jQuery学习日记---第三篇 JS实现导航条点击以后会高亮显示