本文共 16469 字,大约阅读时间需要 54 分钟。
Apache POI 是 Apache 软件基金会开发的开放源代码函式库,主要用于通过 Java 程序读取和写入 Microsoft Office 格式文件。对于 .NET 开发人员,NPOI 是专门为其提供支持的工具包。
POI 包含多个子包,每个子包负责处理特定类型文件:
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("d:/test.xls"));HSSFWorkbook wb = new HSSFWorkbook(fs);HSSFSheet sheet = wb.getSheetAt(0);HSSFRow row = sheet.getRow(i);HSSFCell cell = row.getCell((short) j); HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");HSSFRow row = sheet.createRow((short) 0);HSSFCell cell = sheet.createCell((short) 0);HSSFCellStyle style = wb.createCellStyle();cell.setCellStyle(style);cell.setCellValue(1); wb.setSheetName(0, "12月合同到期");int sheetCount = wb.getNumberOfSheets();HSSFSheet sheet = wb.createSheet("Output");sheet.setSelected(true); int rowCount = sheet.getLastRowNum();row.getLastCellNum();
public String getCellStringValue(HSSFCell cell) { String cellValue = ""; switch (cell.getCellType()) { case CELL_TYPE_STRING: cellValue = cell.getStringCellValue(); break; case CELL_TYPE_NUMERIC: cellValue = String.valueOf(cell.getNumericCellValue()); break; case CELL_TYPE_FORMULA: cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cellValue = String.valueOf(cell.getNumericCellValue()); break; case CELL_TYPE_BLANK: cellValue = " "; break; case CELL_TYPE_BOOLEAN: break; case CELL_TYPE_ERROR: break; default: break; } return cellValue;} sheet.setColumnWidth((short) column, (short) width);row.setHeight((short) height);
Region region = new Region((short) rowFrom, (short) columnFrom, (short) rowTo, (short) columnTo);sheet.addMergedRegion(region);int mergedCellCount = sheet.getNumMergedRegions();
HSSFCellStyle style = wb.createCellStyle();style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setBorderTop(HSSFCellStyle.BORDER_THIN);
HSSFFont font = wb.createFont();font.setFontName("华文行楷");font.setFontHeightInPoints((short) 11);font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);font.setColor(HSSFColor.RED.index);font.setUnderline(FontFormatting.U_SINGLE);font.setTypeOffset(FontFormatting.SS_SUPER);font.setStrikeout(true);style.setFont(font);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);style.setRotation(short rotation);style.setWrapText(true);HSSFDataFormat df = wb.createDataFormat();style.setDataFormat(df.getFormat("0.00%")); HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("row sheet");sheet.shiftRows(5, 10, -5); HSSFCellStyle style = wb.createCellStyle();style.setFillBackgroundColor(HSSFColor.AQUA.index);style.setFillPattern(HSSFCellStyle.BIG_SPOTS);HSSFCell cell = row.createCell((short) 1);cell.setCellValue("X");style = wb.createCellStyle();style.setFillForegroundColor(HSSFColor.ORANGE.index);style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);cell.setCellStyle(style); sheet.setZoom(1, 2);sheet.setZoom(75);
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);cell.setCellFormula("SUM(C2:C3)"); cell.setCellFormula("hyperlink(\"http://www.yiibai.com/testng/\",\"testng\")"); public static void test1() { FileOutputStream fileOut = null; BufferedImage bufferImg = null; try { ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); bufferImg = ImageIO.read(new File(picture)); ImageIO.write(bufferImg, "jpg", byteArrayOut); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("sheet1"); HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 4, 37); HSSFClientAnchor anchor2 = new HSSFClientAnchor(500, 0, 0, 0, (short) 5, 1, (short) 9, 38); HSSFClientAnchor anchor3 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 10, 10); HSSFClientAnchor anchor4 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 8, 8); HSSFClientAnchor anchor5 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 12, 12); HSSFClientAnchor anchor6 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 16, 16); HSSFClientAnchor anchor7 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 20, 20); HSSFClientAnchor anchor8 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 24, 24); HSSFClientAnchor anchor9 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 28, 28); HSSFClientAnchor anchor10 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 32, 32); HSSFClientAnchor anchor11 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 36, 36); HSSFClientAnchor anchor12 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 40, 40); HSSFClientAnchor anchor13 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 44, 44); HSSFClientAnchor anchor14 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 48, 48); HSSFClientAnchor anchor15 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 52, 52); HSSFClientAnchor anchor16 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 56, 56); HSSFClientAnchor anchor17 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 60, 60); HSSFClientAnchor anchor18 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 64, 64); HSSFClientAnchor anchor19 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 68, 68); HSSFClientAnchor anchor20 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 72, 72); HSSFClientAnchor anchor21 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 76, 76); HSSFClientAnchor anchor22 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 80, 80); HSSFClientAnchor anchor23 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 84, 84); HSSFClientAnchor anchor24 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 88, 88); HSSFClientAnchor anchor25 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 92, 92); HSSFClientAnchor anchor26 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 96, 96); HSSFClientAnchor anchor27 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 100, 100); HSSFClientAnchor anchor28 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 104, 104); HSSFClientAnchor anchor29 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 108, 108); HSSFClientAnchor anchor30 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 112, 112); HSSFClientAnchor anchor31 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 116, 116); HSSFClientAnchor anchor32 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 120, 120); HSSFClientAnchor anchor33 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 124, 124); HSSFClientAnchor anchor34 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 128, 128); HSSFClientAnchor anchor35 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 132, 132); HSSFClientAnchor anchor36 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 136, 136); HSSFClientAnchor anchor37 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 140, 140); HSSFClientAnchor anchor38 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 144, 144); HSSFClientAnchor anchor39 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 148, 148); HSSFClientAnchor anchor40 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 152, 152); HSSFClientAnchor anchor41 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 156, 156); HSSFClientAnchor anchor42 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 160, 160); HSSFClientAnchor anchor43 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 164, 164); HSSFClientAnchor anchor44 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 168, 168); HSSFClientAnchor anchor45 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 172, 172); HSSFClientAnchor anchor46 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 176, 176); HSSFClientAnchor anchor47 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 180, 180); HSSFClientAnchor anchor48 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 184, 184); HSSFClientAnchor anchor49 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 188, 188); HSSFClientAnchor anchor50 = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 192, 192); patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor2, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor3, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor4, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor5, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor6, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor7, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor8, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor9, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor10, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor11, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor12, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor13, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor14, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor15, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor16, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor17, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor18, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor19, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor20, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor21, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor22, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor23, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor24, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor25, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor26, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor27, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor28, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor29, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor30, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor31, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor32, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor33, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor34, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor35, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor36, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor37, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor38, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor39, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor40, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor41, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor42, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor43, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor44, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor45, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor46, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor47, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor48, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor49, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor50, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); fileOut = new FileOutputStream(filepath + "/excel.xls"); wb.write(fileOut); System.out.println("test1"); } catch (Exception e) { e.printStackTrace(); }} public static void testRead() { InputStream inp = new FileInputStream(filepath + "/excel.xls"); HSSFWorkbook workbook = new HSSFWorkbook(inp); List pictures = workbook.getAllPictures(); for (int i = 0; i < pictures.size(); i++) { HSSFPictureData picture = pictures.get(i); // 提取图片数据 byte[] pictureBytes = picture.getImageData(); // 处理图片数据 }} | CellType 类型 | 值 | 描述 |
|---|---|---|
| CELL_TYPE_NUMERIC | 0 | 数值型 |
| CELL_TYPE_STRING | 1 | 字符串型 |
| CELL_TYPE_FORMULA | 2 | 公式型 |
| CELL_TYPE_BLANK | 3 | 空值 |
| CELL_TYPE_BOOLEAN | 4 | 布尔型 |
| CELL_TYPE_ERROR | 5 | 错误 |
通过 setCellType 方法:
通过 getCellType 方法: