HSSF方式:
1 package com.tools.poi.lesson1; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.text.ParseException; 8 import java.text.SimpleDateFormat; 9 import java.util.ArrayList; 10 import java.util.List; 11 12 import org.apache.poi.hssf.usermodel.HSSFCell; 13 import org.apache.poi.hssf.usermodel.HSSFCellStyle; 14 import org.apache.poi.hssf.usermodel.HSSFRow; 15 import org.apache.poi.hssf.usermodel.HSSFSheet; 16 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 17 import org.apache.poi.hssf.util.HSSFColor; 18 import org.apache.poi.poifs.filesystem.POIFSFileSystem; 19 import org.apache.poi.ss.usermodel.Cell; 20 import org.apache.poi.ss.usermodel.CellStyle; 21 22 import com.tools.poi.bean.Student; 23 24 public class ExcelUtilWithHSSF { 25 public static void main(String[] args) { 26 try { 27 getExcelAsFile("aaa"); 28 } catch (FileNotFoundException e) { 29 e.printStackTrace(); 30 } catch (IOException e) { 31 e.printStackTrace(); 32 } 33 34 35 // try { 36 // CreateExcelDemo1(); 37 // } catch (ParseException e) { 38 // e.printStackTrace(); 39 // } 40 41 42 } 43 44 /** 45 * 得到Excel,並解析內容 46 * @param file 47 * @throws FileNotFoundException 48 * @throws IOException 49 */ 50 public static void getExcelAsFile(String file) throws FileNotFoundException, IOException{ 51 //1.得到Excel常用對象 52 // POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("d:/FTP/test.xls")); 53 POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("d:/FTP/new1.xls")); 54 //2.得到Excel工作簿對象 55 HSSFWorkbook wb = new HSSFWorkbook(fs); 56 //3.得到Excel工作表對象 57 HSSFSheet sheet = wb.getSheetAt(0); 58 //總行數 59 int trLength = sheet.getLastRowNum(); 60 //4.得到Excel工作表的行 61 HSSFRow row = sheet.getRow(0); 62 //總列數 63 int tdLength = row.getLastCellNum(); 64 //5.得到Excel工作表指定行的單元格 65 HSSFCell cell = row.getCell((short)1); 66 //6.得到單元格樣式 67 CellStyle cellStyle = cell.getCellStyle(); 68 for(int i=0;i<trLength;i++){ 69 //得到Excel工作表的行 70 HSSFRow row1 = sheet.getRow(i); 71 for(int j=0;j<tdLength;j++){ 72 73 //得到Excel工作表指定行的單元格 74 HSSFCell cell1 = row1.getCell(j); 75 76 /** 77 * 為了處理:Excel異常Cannot get a text value from a numeric cell 78 * 將所有列中的內容都設置成String類型格式 79 */ 80 if(cell1!=null){ 81 cell1.setCellType(Cell.CELL_TYPE_STRING); 82 } 83 84 //獲得每一列中的值 85 System.out.print(cell1.getStringCellValue()+"\t\t\t"); 86 } 87 System.out.println(); 88 } 89 } 90 91 92 /** 93 * 創建Excel,並寫入內容 94 */ 95 public static void CreateExcel(){ 96 97 //1.創建Excel工作薄對象 98 HSSFWorkbook wb = new HSSFWorkbook(); 99 //2.創建Excel工作表對象 100 HSSFSheet sheet = wb.createSheet("new Sheet"); 101 //3.創建Excel工作表的行 102 HSSFRow row = sheet.createRow(6); 103 //4.創建單元格樣式 104 CellStyle cellStyle =wb.createCellStyle(); 105 // 設置這些樣式 106 cellStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index); 107 cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 108 cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); 109 cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); 110 cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); 111 cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); 112 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); 113 114 115 116 //5.創建Excel工作表指定行的單元格 117 row.createCell(0).setCellStyle(cellStyle); 118 //6.設置Excel工作表的值 119 row.createCell(0).setCellValue("aaaa"); 120 121 row.createCell(1).setCellStyle(cellStyle); 122 row.createCell(1).setCellValue("bbbb"); 123 124 125 //設置sheet名稱和單元格內容 126 wb.setSheetName(0,"第一張工作表"); 127 //設置單元格內容 cell.setCellValue("單元格內容"); 128 129 // 最后一步,將文件存到指定位置 130 try 131 { 132 FileOutputStream fout = new FileOutputStream("E:/students.xls"); 133 wb.write(fout); 134 fout.close(); 135 } 136 catch (Exception e) 137 { 138 e.printStackTrace(); 139 } 140 } 141 142 /** 143 * 創建Excel的實例 144 * @throws ParseException 145 */ 146 public static void CreateExcelDemo1() throws ParseException{ 147 List list = new ArrayList(); 148 SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd"); 149 Student user1 = new Student(1, "張三", 16,true, df.parse("1997-03-12")); 150 Student user2 = new Student(2, "李四", 17,true, df.parse("1996-08-12")); 151 Student user3 = new Student(3, "王五", 26,false, df.parse("1985-11-12")); 152 list.add(user1); 153 list.add(user2); 154 list.add(user3); 155 156 157 // 第一步,創建一個webbook,對應一個Excel文件 158 HSSFWorkbook wb = new HSSFWorkbook(); 159 // 第二步,在webbook中添加一個sheet,對應Excel文件中的sheet 160 HSSFSheet sheet = wb.createSheet("學生表一"); 161 // 第三步,在sheet中添加表頭第0行,注意老版本poi對Excel的行數列數有限制short 162 HSSFRow row = sheet.createRow((int) 0); 163 // 第四步,創建單元格,並設置值表頭 設置表頭居中 164 HSSFCellStyle style = wb.createCellStyle(); 165 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 創建一個居中格式 166 167 HSSFCell cell = row.createCell((short) 0); 168 cell.setCellValue("學號"); 169 cell.setCellStyle(style); 170 cell = row.createCell((short) 1); 171 cell.setCellValue("姓名"); 172 cell.setCellStyle(style); 173 cell = row.createCell((short) 2); 174 cell.setCellValue("年齡"); 175 cell.setCellStyle(style); 176 cell = row.createCell((short) 3); 177 cell.setCellValue("性別"); 178 cell.setCellStyle(style); 179 cell = row.createCell((short) 4); 180 cell.setCellValue("生日"); 181 cell.setCellStyle(style); 182 183 // 第五步,寫入實體數據 實際應用中這些數據從數據庫得到, 184 185 for (int i = 0; i < list.size(); i++) 186 { 187 row = sheet.createRow((int) i + 1); 188 Student stu = (Student) list.get(i); 189 // 第四步,創建單元格,並設置值 190 row.createCell((short) 0).setCellValue((double) stu.getId()); 191 row.createCell((short) 1).setCellValue(stu.getName()); 192 row.createCell((short) 2).setCellValue((double) stu.getAge()); 193 row.createCell((short)3).setCellValue(stu.getSex()==true?"男":"女"); 194 cell = row.createCell((short) 4); 195 cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(stu 196 .getBirthday())); 197 } 198 // 第六步,將文件存到指定位置 199 try 200 { 201 FileOutputStream fout = new FileOutputStream("E:/students.xls"); 202 wb.write(fout); 203 fout.close(); 204 } 205 catch (Exception e) 206 { 207 e.printStackTrace(); 208 } 209 210 211 212 } 213 }
XSSF方式:
1 package com.tools.poi.lesson1; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.io.OutputStream; 10 import java.text.ParseException; 11 import java.text.SimpleDateFormat; 12 import java.util.ArrayList; 13 import java.util.List; 14 15 import org.apache.poi.hssf.usermodel.HSSFCell; 16 import org.apache.poi.hssf.usermodel.HSSFCellStyle; 17 import org.apache.poi.hssf.usermodel.HSSFRow; 18 import org.apache.poi.hssf.usermodel.HSSFSheet; 19 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 20 import org.apache.poi.hssf.util.HSSFColor; 21 import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 22 import org.apache.poi.poifs.filesystem.POIFSFileSystem; 23 import org.apache.poi.ss.usermodel.Cell; 24 import org.apache.poi.ss.usermodel.CellStyle; 25 import org.apache.poi.ss.usermodel.Row; 26 import org.apache.poi.ss.usermodel.Sheet; 27 import org.apache.poi.ss.usermodel.Workbook; 28 import org.apache.poi.ss.usermodel.WorkbookFactory; 29 import org.apache.poi.ss.util.WorkbookUtil; 30 31 import com.tools.poi.bean.Student; 32 33 public class ExcelUtilWithXSSF { 34 public static void main(String[] args) { 35 try { 36 getExcelAsFile("d:/FTP/系統報表.xls"); 37 } catch (FileNotFoundException e) { 38 e.printStackTrace(); 39 } catch (IOException e) { 40 e.printStackTrace(); 41 } catch (InvalidFormatException e) { 42 e.printStackTrace(); 43 } 44 45 46 // try { 47 // CreateExcelDemo1(); 48 // } catch (ParseException e) { 49 // e.printStackTrace(); 50 // } 51 52 53 } 54 55 /** 56 * 得到Excel,並解析內容 對2007及以上版本 使用XSSF解析 57 * @param file 58 * @throws FileNotFoundException 59 * @throws IOException 60 * @throws InvalidFormatException 61 */ 62 public static void getExcelAsFile(String file) throws FileNotFoundException, IOException, InvalidFormatException{ 63 // //1.得到Excel常用對象 64 // POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("d:/FTP/new1.xls")); 65 // //2.得到Excel工作簿對象 66 // HSSFWorkbook wb = new HSSFWorkbook(fs); 67 68 69 70 InputStream ins = null; 71 Workbook wb = null; 72 ins=new FileInputStream(new File(file)); 73 //ins= ExcelService.class.getClassLoader().getResourceAsStream(filePath); 74 wb = WorkbookFactory.create(ins); 75 ins.close(); 76 77 78 //3.得到Excel工作表對象 79 Sheet sheet = wb.getSheetAt(0); 80 //總行數 81 int trLength = sheet.getLastRowNum(); 82 //4.得到Excel工作表的行 83 Row row = sheet.getRow(0); 84 //總列數 85 int tdLength = row.getLastCellNum(); 86 //5.得到Excel工作表指定行的單元格 87 Cell cell = row.getCell((short)1); 88 //6.得到單元格樣式 89 CellStyle cellStyle = cell.getCellStyle(); 90 91 for(int i=5;i<trLength;i++){ 92 //得到Excel工作表的行 93 Row row1 = sheet.getRow(i); 94 for(int j=0;j<tdLength;j++){ 95 //得到Excel工作表指定行的單元格 96 Cell cell1 = row1.getCell(j); 97 /** 98 * 為了處理:Excel異常Cannot get a text value from a numeric cell 99 * 將所有列中的內容都設置成String類型格式 100 */ 101 if(cell1!=null){ 102 cell1.setCellType(Cell.CELL_TYPE_STRING); 103 } 104 105 if(j==5&&i<=10){ 106 cell1.setCellValue("1000"); 107 } 108 109 //獲得每一列中的值 110 System.out.print(cell1+" "); 111 } 112 System.out.println(); 113 } 114 115 //將修改后的數據保存 116 OutputStream out = new FileOutputStream(file); 117 wb.write(out); 118 } 119 120 121 /** 122 * 創建Excel,並寫入內容 123 */ 124 public static void CreateExcel(){ 125 126 //1.創建Excel工作薄對象 127 HSSFWorkbook wb = new HSSFWorkbook(); 128 //2.創建Excel工作表對象 129 HSSFSheet sheet = wb.createSheet("new Sheet"); 130 //3.創建Excel工作表的行 131 HSSFRow row = sheet.createRow(6); 132 //4.創建單元格樣式 133 CellStyle cellStyle =wb.createCellStyle(); 134 // 設置這些樣式 135 cellStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index); 136 cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 137 cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); 138 cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); 139 cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); 140 cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); 141 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); 142 143 144 145 //5.創建Excel工作表指定行的單元格 146 row.createCell(0).setCellStyle(cellStyle); 147 //6.設置Excel工作表的值 148 row.createCell(0).setCellValue("aaaa"); 149 150 row.createCell(1).setCellStyle(cellStyle); 151 row.createCell(1).setCellValue("bbbb"); 152 153 154 //設置sheet名稱和單元格內容 155 wb.setSheetName(0,"第一張工作表"); 156 //設置單元格內容 cell.setCellValue("單元格內容"); 157 158 // 最后一步,將文件存到指定位置 159 try 160 { 161 FileOutputStream fout = new FileOutputStream("E:/students.xls"); 162 wb.write(fout); 163 fout.close(); 164 } 165 catch (Exception e) 166 { 167 e.printStackTrace(); 168 } 169 } 170 171 /** 172 * 創建Excel的實例 173 * @throws ParseException 174 */ 175 public static void CreateExcelDemo1() throws ParseException{ 176 List list = new ArrayList(); 177 SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd"); 178 Student user1 = new Student(1, "張三", 16,true, df.parse("1997-03-12")); 179 Student user2 = new Student(2, "李四", 17,true, df.parse("1996-08-12")); 180 Student user3 = new Student(3, "王五", 26,false, df.parse("1985-11-12")); 181 list.add(user1); 182 list.add(user2); 183 list.add(user3); 184 185 186 // 第一步,創建一個webbook,對應一個Excel文件 187 HSSFWorkbook wb = new HSSFWorkbook(); 188 // 第二步,在webbook中添加一個sheet,對應Excel文件中的sheet 189 HSSFSheet sheet = wb.createSheet("學生表一"); 190 // 第三步,在sheet中添加表頭第0行,注意老版本poi對Excel的行數列數有限制short 191 HSSFRow row = sheet.createRow((int) 0); 192 // 第四步,創建單元格,並設置值表頭 設置表頭居中 193 HSSFCellStyle style = wb.createCellStyle(); 194 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 創建一個居中格式 195 196 HSSFCell cell = row.createCell((short) 0); 197 cell.setCellValue("學號"); 198 cell.setCellStyle(style); 199 cell = row.createCell((short) 1); 200 cell.setCellValue("姓名"); 201 cell.setCellStyle(style); 202 cell = row.createCell((short) 2); 203 cell.setCellValue("年齡"); 204 cell.setCellStyle(style); 205 cell = row.createCell((short) 3); 206 cell.setCellValue("性別"); 207 cell.setCellStyle(style); 208 cell = row.createCell((short) 4); 209 cell.setCellValue("生日"); 210 cell.setCellStyle(style); 211 212 // 第五步,寫入實體數據 實際應用中這些數據從數據庫得到, 213 214 for (int i = 0; i < list.size(); i++) 215 { 216 row = sheet.createRow((int) i + 1); 217 Student stu = (Student) list.get(i); 218 // 第四步,創建單元格,並設置值 219 row.createCell((short) 0).setCellValue((double) stu.getId()); 220 row.createCell((short) 1).setCellValue(stu.getName()); 221 row.createCell((short) 2).setCellValue((double) stu.getAge()); 222 row.createCell((short)3).setCellValue(stu.getSex()==true?"男":"女"); 223 cell = row.createCell((short) 4); 224 cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(stu 225 .getBirthday())); 226 } 227 // 第六步,將文件存到指定位置 228 try 229 { 230 FileOutputStream fout = new FileOutputStream("E:/students.xls"); 231 wb.write(fout); 232 fout.close(); 233 } 234 catch (Exception e) 235 { 236 e.printStackTrace(); 237 } 238 239 240 241 } 242 }