poi操作excel_poi操作excel计算公式不生效 - CSDN
  • maven依赖: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency>...org.apache.poi</groupId> <artifactId>poi</artifactId> ...

    maven依赖:

    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
    		<dependency>
    		    <groupId>org.apache.poi</groupId>
    		    <artifactId>poi</artifactId>
    		    <version>4.1.0</version>
    		</dependency>
    		<dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-scratchpad</artifactId>
                <version>4.1.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.1.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml-schemas</artifactId>
                <version>4.1.0</version>
            </dependency>

    工具类:

    1.代码都是活的可以根据自己的业务修改,比如读取返还的数据格式不爽可以修改。

    2.catch部分建议使用工程的日志系统 把异常记录。

    package hoperun.pagoda.dxlAnalyse.utils;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.apache.poi.EncryptedDocumentException;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.BorderStyle;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.CellStyle;
    import org.apache.poi.ss.usermodel.CellType;
    import org.apache.poi.ss.usermodel.FillPatternType;
    import org.apache.poi.ss.usermodel.Font;
    import org.apache.poi.ss.usermodel.HorizontalAlignment;
    import org.apache.poi.ss.usermodel.IndexedColors;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.VerticalAlignment;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.ss.usermodel.WorkbookFactory;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    /**
     * Use poi Operate the Excel.
     * @author zy
     */
    public final class PoiUtils {
        /**
         * writeWorkbook.
         */
        private static Workbook writeWorkbook;
        /**
         * readworkbook.
         */
        private static Workbook readworkbook;
        /**
         * outFilepath.
         */
        private static String writeFilePath;
        /**
         * readFilepath.
         */
        private static String readFilePath;
        /**
         * excel xls.
         */
        public static final String OFFICE_EXCEL_XLS = "xls";
        /**
         * excel xlsx.
         */
        public static final String OFFICE_EXCEL_XLSX = "xlsx";
        /**
         * font size 12.
         */
        public static final int FONT_SIZE_12 = 12;
        /**
         * cell width 15.
         */
        public static final int CELL_DEFAULT_WIDTH = 20;
    
        /**
         * font size 16.
         */
        public static final int FONT_SIZE_16 = 16;
        /**
         * construction.
         */
        private PoiUtils() {
    
        }
    
        /**
         * Gets the Workbook object based on the file path.
         * @param filepath1 filepath
         */
        public static void getWorkbook(final String filepath1) {
            readFilePath = filepath1;
            InputStream is = null;
            if (readFilePath.isEmpty()) {
                throw new IllegalArgumentException("The file path cannot be empty");
            } else {
                String suffiex = getSuffiex(readFilePath);
                if (suffiex.isEmpty()) {
                    throw new IllegalArgumentException("The file suffix cannot be empty");
                }
                if (OFFICE_EXCEL_XLS.equals(suffiex) || OFFICE_EXCEL_XLSX.equals(suffiex)) {
                    try {
                        is = new FileInputStream(readFilePath);
                        readworkbook = WorkbookFactory.create(is);
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (EncryptedDocumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }finally {
                        try {
                            if (is != null) {
                                is.close();
                            }
                            if (readworkbook != null) {
                                readworkbook.close();
                            }
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                } else {
                    throw new IllegalArgumentException("This file is not an Excel");
                }
            }
        }
    
        /**
         * Also read the contents of the specified Sheet.
         * @param sheetNo The sheet number, starting at 0, is set to null if sheetNo reads the full text.
         * @return excel content.
         */
        public static String readExcel(final Integer sheetNo) {
            StringBuilder sb = new StringBuilder();
            try {
                getWorkbook(readFilePath);
                if (readworkbook != null) {
                    if (sheetNo == null) {
                        int numberOfSheets = readworkbook.getNumberOfSheets();
                        for (int i = 0; i < numberOfSheets; i++) {
                            Sheet sheet = readworkbook.getSheetAt(i);
                            if (sheet == null) {
                                continue;
                            }
                            sb.append(readExcelSheet(sheet));
                        }
                    } else {
                        Sheet sheet = readworkbook.getSheetAt(sheetNo);
                        if (sheet != null) {
                            sb.append(readExcelSheet(sheet));
                        }
                    }
                }
            } catch (EncryptedDocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return sb.toString();
        }
    
        /**
         * read Excel Sheet.
         * @param sheet sheet
         * @return String
         */
        private static String readExcelSheet(final Sheet sheet) {
            StringBuilder sb = new StringBuilder();
            if (sheet != null) {
                int rowNos = sheet.getLastRowNum();// Get the total number of records in excel
                for (int i = 0; i <= rowNos; i++) {
                    Row row = sheet.getRow(i);
                    if (row != null) {
                        int columNos = row.getLastCellNum();
                        for (int j = 0; j < columNos; j++) {
                            Cell cell = row.getCell(j);
                            if (cell != null) {
                                cell.setCellType(CellType.STRING);
                                sb.append(cell.getStringCellValue() + " ");
                            }
                        }
                    }
                }
            }
            return sb.toString();
        }
    
        /**
         * Create Workbook.
         * @param filepath1 filepath.
         */
        public static void createWorkbook(final String filepath1) {
            writeFilePath = filepath1;
            if (writeFilePath.isEmpty()) {
                throw new IllegalArgumentException("文件路径不能为空");
            } else {
                String suffiex = getSuffiex(writeFilePath);
                if (suffiex.isEmpty()) {
                    throw new IllegalArgumentException("文件后缀不能为空");
                }
                if (OFFICE_EXCEL_XLS.equals(suffiex.toLowerCase())) {
                    writeWorkbook = new HSSFWorkbook();
                } else {
                    writeWorkbook = new XSSFWorkbook();
                }
            }
        }
    
        /**
         * creat Excel file.
         * @param sheetName new sheet name.
         * @param allData all data.
         */
        public static void creatSheet(final String sheetName, final List<List<Object>> allData) {
            //creat sheet.
            Sheet sheet;
            if (sheetName.isEmpty()) {
                // use default sheet name.
                sheet = writeWorkbook.createSheet();
            } else {
                sheet = writeWorkbook.createSheet(sheetName);
            }
            //set column width to default.
            sheet.setDefaultColumnWidth((short) CELL_DEFAULT_WIDTH);
            //creat style.
            Map<String, CellStyle> styles = createStyles(writeWorkbook);
            for(int rowIndex = 0; rowIndex<allData.size();rowIndex++) {
    
                Row row = sheet.createRow(rowIndex);
                List<Object> cellsData = allData.get(rowIndex);
                for(int cellIndex = 0;cellIndex<cellsData.size();cellIndex++) {
                    Cell cell = row.createCell(cellIndex);
                    if(rowIndex == 0) {
                        cell.setCellStyle(styles.get("header"));
                    }else if ((rowIndex & 1)==1) {
                        //w 设置cell的样式
                        cell.setCellStyle(styles.get("cellA"));
                    } else {
                        cell.setCellStyle(styles.get("cellB"));
                    }
                    Object cellData = cellsData.get(cellIndex);
                    //Determine the type of object.
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    if (cellData instanceof Double) {
                        cell.setCellValue((Double) cellData);
                    } else if (cellData instanceof Date) {
                        String time = simpleDateFormat.format(cellData);
                        cell.setCellValue(time);
                    } else if (cellData instanceof Calendar) {
                        Calendar calendar = (Calendar) cellData;
                        String time = simpleDateFormat.format(calendar.getTime());
                        cell.setCellValue(time);
                    } else if (cellData instanceof Boolean) {
                        cell.setCellValue((Boolean) cellData);
                    } else {
                        if (cellData != null) {
                            cell.setCellValue(cellData.toString());
                        }
                    }
                }
            }
        }
    
        /**
         * write Execute.
         * @return result
         */
        public static boolean writeExcel() {
            boolean result = false;
            OutputStream outputStream = null;
            try {
                outputStream = new FileOutputStream(writeFilePath);
                writeWorkbook.write(outputStream);
                result = true;
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                try {
                    if (outputStream != null) {
                        outputStream.close();
                    }
                    if (writeWorkbook != null) {
                        writeWorkbook.close();
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            return result;
        }
    
        /**
         * set style.
         * @param wb Workbook.
         * @return style Map.
         */
        private static Map<String, CellStyle> createStyles(final Workbook wb) {
            Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
            //title style.
            CellStyle titleStyle =  wb.createCellStyle();
            titleStyle.setAlignment(HorizontalAlignment.CENTER); // 水平对齐
            titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直对齐
            titleStyle.setLocked(true); // 样式锁定
            titleStyle.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex());
            Font titleFont = wb.createFont();
            titleFont.setFontHeightInPoints((short) FONT_SIZE_16);
            titleFont.setBold(true);
            titleFont.setFontName("微软雅黑");
            titleStyle.setFont(titleFont);
            styles.put("title", titleStyle);
    
            //header style.
            CellStyle headerStyle = wb.createCellStyle();
            headerStyle.setAlignment(HorizontalAlignment.CENTER);
            headerStyle.setVerticalAlignment(VerticalAlignment.CENTER);
            headerStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex()); // 前景色
            headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 颜色填充方式
            headerStyle.setWrapText(true);
            headerStyle.setBorderRight(BorderStyle.THIN); // 设置边界
            headerStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
            headerStyle.setBorderLeft(BorderStyle.THIN);
            headerStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
            headerStyle.setBorderTop(BorderStyle.THIN);
            headerStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
            headerStyle.setBorderBottom(BorderStyle.THIN);
            headerStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
            Font headerFont = wb.createFont();
            headerFont.setFontHeightInPoints((short) FONT_SIZE_12);
            headerFont.setColor(IndexedColors.WHITE.getIndex());
            titleFont.setFontName("微软雅黑");
            headerStyle.setFont(headerFont);
            styles.put("header", headerStyle);
    
            Font cellStyleFont = wb.createFont();
            cellStyleFont.setFontHeightInPoints((short) FONT_SIZE_12);
            cellStyleFont.setColor(IndexedColors.BLUE_GREY.getIndex());
            cellStyleFont.setFontName("微软雅黑");
    
            //content style A.
            CellStyle cellStyleA =  wb.createCellStyle();
            cellStyleA.setAlignment(HorizontalAlignment.CENTER); // 居中设置
            cellStyleA.setVerticalAlignment(VerticalAlignment.CENTER);
            cellStyleA.setWrapText(true);
            cellStyleA.setBorderRight(BorderStyle.THIN);
            cellStyleA.setRightBorderColor(IndexedColors.BLACK.getIndex());
            cellStyleA.setBorderLeft(BorderStyle.THIN);
            cellStyleA.setLeftBorderColor(IndexedColors.BLACK.getIndex());
            cellStyleA.setBorderTop(BorderStyle.THIN);
            cellStyleA.setTopBorderColor(IndexedColors.BLACK.getIndex());
            cellStyleA.setBorderBottom(BorderStyle.THIN);
            cellStyleA.setBottomBorderColor(IndexedColors.BLACK.getIndex());
            cellStyleA.setFont(cellStyleFont);
            styles.put("cellA", cellStyleA);
            //content style A:The foreground color is light yellow.
            CellStyle cellStyleB =  wb.createCellStyle();
            cellStyleB.setAlignment(HorizontalAlignment.CENTER);
            cellStyleB.setVerticalAlignment(VerticalAlignment.CENTER);
            cellStyleB.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex());
            cellStyleB.setFillPattern(FillPatternType.SOLID_FOREGROUND);
            cellStyleB.setWrapText(true);
            cellStyleB.setBorderRight(BorderStyle.THIN);
            cellStyleB.setRightBorderColor(IndexedColors.BLACK.getIndex());
            cellStyleB.setBorderLeft(BorderStyle.THIN);
            cellStyleB.setLeftBorderColor(IndexedColors.BLACK.getIndex());
            cellStyleB.setBorderTop(BorderStyle.THIN);
            cellStyleB.setTopBorderColor(IndexedColors.BLACK.getIndex());
            cellStyleB.setBorderBottom(BorderStyle.THIN);
            cellStyleB.setBottomBorderColor(IndexedColors.BLACK.getIndex());
            cellStyleB.setFont(cellStyleFont);
            styles.put("cellB", cellStyleB);
            return styles;
        }
    
    
        /**
         * get suffix.
         * @param path path.
         * @return suffix
         */
        private static String getSuffiex(final String path) {
            if ( path.isEmpty()) {
                return "";
            }
            int index =  path.lastIndexOf(".");
            if (index == -1) {
                return "";
            }
            return  path.substring(index + 1,  path.length());
        }
    }
    

    写入调用:

    // 创建workbook
    String outFilePath = "c://test.xls";
    PoiUtils.createWorkbook(outFilePath);
    //创建第一个sheet并写入数据
    List<List<Object>> formDate = new  ArrayList<List<Object>>();
    List<Object> formTitle = Arrays.asList("Form一览","form名","Filed数","Button数","Code量");
    formDate.add(....);//添加行的内容
    disposalFormData(formCountMap, formDate);
    String sheetName1 = "sheet名字";
    PoiUtils.creatSheet(sheetName1, formDate);
    //创建第二个sheet并写入数据
    //......
    //把workboot写入文件
    PoiUtils.writeExcel()

    读取调用:

    String filePath = "c://test.xls";
    PoiUtils.getWorkbook(filePath);
    //读第一个sheet内容
    String content = PoiUtils.readExcel(0);
    //读所有sheet内容
    String content1 = PoiUtils.readExcel(null);

    poi 设置超链接

    public void testSetHyperLink() {
        XSSFWorkbook workbook = new XSSFWorkbook();
        try {
            FileOutputStream out = new FileOutputStream("d:\\testSetHyperLink.xlsx");
            XSSFSheet sheet = workbook.createSheet("1");
            XSSFCellStyle style = workbook.createCellStyle();
            XSSFFont font = workbook.createFont();
            font.setUnderline(XSSFFont.U_DOUBLE);
            font.setColor(IndexedColors.RED.getIndex());
            style.setFont(font);
    
    
            CreationHelper createHelper = workbook.getCreationHelper();
    
            XSSFCellStyle cellStyle = workbook.createCellStyle();
            XSSFRow row = sheet.createRow(0);
            XSSFCell cell = row.createCell(0);
            cell.setCellValue("test.xlsx");
            XSSFFont font1 = workbook.createFont();
            font1.setColor(HSSFColor.GREEN.index);
            cellStyle.setFont(font1);
            cell.setCellStyle(cellStyle);
    
            Hyperlink hyperlink = createHelper.createHyperlink(Hyperlink.LINK_FILE);
            hyperlink.setAddress("C://Users//Administrator//Desktop//test.xlsx");
            cell.setHyperlink(hyperlink);
            workbook.write(out);
            out.close();
    
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    }

     

    展开全文
  • 一、 POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对MicrosoftOffice格式档案读和写的功能。 二、 HSSF概况 HSSF 是HorribleSpreadSheet Format的缩写,通过HSSF,你可以用纯...

    一、 POI简介
    Apache POIApache软件基金会的开放源码函式库,POI提供APIJava程序对MicrosoftOffice格式档案读和写的功能。

    二、 HSSF概况
    HSSF HorribleSpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类APIusermodeleventusermodel,即用户模型事件-用户模型

    三、 POI EXCEL文档结构类
    HSSFWorkbookexcel文档对象

    HSSFSheetexcelsheetHSSFRow excel的行

    HSSFCellexcel的单元格 HSSFFontexcel字体

    HSSFName 名称HSSFDataFormat 日期格式

    HSSFHeadersheet

    HSSFFootersheet

    HSSFCellStylecell样式

    HSSFDateUtil日期

    HSSFPrintSetup打印

    HSSFErrorConstants错误信息表

    四、 EXCEL常用操作方法

    1得到Excel常用对象

    Java代码

    1. POIFSFileSystem fs=newPOIFSFileSystem(new     FileInputStream("d:/test.xls"));
    2. //得到Excel工作簿对象
    3. HSSFWorkbook wb = new HSSFWorkbook(fs);
    4. //得到Excel工作表对象
    5. HSSFSheet sheet = wb.getSheetAt(0);
    6. //得到Excel工作表的行
    7. HSSFRow row = sheet.getRow(i);
    8. //得到Excel工作表指定行的单元格
    9. HSSFCell cell = row.getCell((short) j);
    10. cellStyle = cell.getCellStyle();//得到单元格样式
    11. POIFSFileSystem fs=newPOIFSFileSystem(new     FileInputStream("d:/test.xls"));
    12. //得到Excel工作簿对象
    13. HSSFWorkbook wb = new HSSFWorkbook(fs);
    14. //得到Excel工作表对象
    15. HSSFSheet sheet = wb.getSheetAt(0);
    16. //得到Excel工作表的行
    17. HSSFRow row = sheet.getRow(i);
    18. //得到Excel工作表指定行的单元格
    19. HSSFCell cell = row.getCell((short) j);
    20. cellStyle = cell.getCellStyle();//得到单元格样式



    2、建立Excel常用对象

    Java代码

    1. HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象    
    2. HSSFSheet sheet = wb.createSheet("new     sheet");//创建Excel工作表对象    
    3. HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行    
    4. cellStyle = wb.createCellStyle();//创建单元格样式
    5. row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格    
    6. row.createCell((short)0).setCellValue(1); //设置Excel工作表的值    
    7. HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象
    8. HSSFSheet sheet = wb.createSheet("new     sheet");//创建Excel工作表对象    
    9. HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行
    10. cellStyle = wb.createCellStyle();//创建单元格样式
    11. row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格
    12. row.createCell((short)0).setCellValue(1); //设置Excel工作表的值



    3、设置sheet名称和单元格内容

    Java代码

    1. wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);    
    2. cell.setEncoding((short) 1);
    3. cell.setCellValue("单元格内容");
    4. wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);    
    5. cell.setEncoding((short) 1);
    6. cell.setCellValue("单元格内容");



    4、取得sheet的数目

    Java代码

    1. wb.getNumberOfSheets()
    2. wb.getNumberOfSheets()



    5根据index取得sheet对象

    Java代码

    1. HSSFSheet sheet = wb.getSheetAt(0);
    2. HSSFSheet sheet = wb.getSheetAt(0);



    6、取得有效的行数

    Java代码

    1. int rowcount = sheet.getLastRowNum();
    2. int rowcount = sheet.getLastRowNum();



    7、取得一行的有效单元格个数

    Java代码

    1. row.getLastCellNum();
    2. row.getLastCellNum();


    8、单元格值类型读写

    Java代码

    1. cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型    
    2. cell.getNumericCellValue();//读取为数值类型的单元格内容
    3. cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型
    4. cell.getNumericCellValue();//读取为数值类型的单元格内容



    9、设置列宽、行高

    Java代码

    1. sheet.setColumnWidth((short)column,(short)width);
    2. row.setHeight((short)height);
    3. sheet.setColumnWidth((short)column,(short)width);
    4. row.setHeight((short)height);



    10、添加区域,合并单元格

    Java代码

    1. Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo
    2. ,(short)columnTo);//合并从第rowFrom行columnFrom列    
    3. sheet.addMergedRegion(region);// 到rowTo行columnTo的区域
    4. //得到所有区域
    5. sheet.getNumMergedRegions()
    6. Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo
    7. ,(short)columnTo);//合并从第rowFrom行columnFrom列
    8. sheet.addMergedRegion(region);// 到rowTo行columnTo的区域
    9. //得到所有区域
    10. sheet.getNumMergedRegions()



    11、保存Excel文件

    Java代码

    1. FileOutputStream fileOut = new FileOutputStream(path);    
    2. wb.write(fileOut);
    3. FileOutputStream fileOut = new     FileOutputStream(path);
    4. wb.write(fileOut);



    12、根据单元格不同属性返回字符串数值

    Java代码

    1. public String getCellStringValue(HSSFCell cell) {
    2. String cellValue = "";
    3. switch (cell.getCellType()) {
    4. case HSSFCell.CELL_TYPE_STRING://字符串类型
    5. cellValue = cell.getStringCellValue();
    6. if(cellValue.trim().equals("")||cellValue.trim().length()<=0)
    7. cellValue=" ";
    8. break;
    9. case HSSFCell.CELL_TYPE_NUMERIC: //数值类型
    10. cellValue = String.valueOf(cell.getNumericCellValue());    
    11. break;
    12. case HSSFCell.CELL_TYPE_FORMULA: //公式
    13. cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
    14. cellValue =     String.valueOf(cell.getNumericCellValue());
    15. break;
    16. case HSSFCell.CELL_TYPE_BLANK:
    17. cellValue=" ";
    18. break;
    19. case HSSFCell.CELL_TYPE_BOOLEAN:
    20. break;
    21. case HSSFCell.CELL_TYPE_ERROR:
    22. break;
    23. default:
    24. break;
    25. }
    26. return cellValue;
    27. }
    28. public String getCellStringValue(HSSFCell cell) {
    29. String cellValue = "";
    30. switch (cell.getCellType()) {
    31. case HSSFCell.CELL_TYPE_STRING://字符串类型
    32. cellValue = cell.getStringCellValue();
    33. if(cellValue.trim().equals("")||cellValue.trim().length()<=0)
    34. cellValue=" ";
    35. break;
    36. case HSSFCell.CELL_TYPE_NUMERIC: //数值类型
    37. cellValue =     String.valueOf(cell.getNumericCellValue());
    38. break;
    39. case HSSFCell.CELL_TYPE_FORMULA: //公式
    40. cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
    41. cellValue =     String.valueOf(cell.getNumericCellValue());
    42. break;
    43. case HSSFCell.CELL_TYPE_BLANK:
    44. cellValue=" ";
    45. break;
    46. case HSSFCell.CELL_TYPE_BOOLEAN:
    47. break;
    48. case HSSFCell.CELL_TYPE_ERROR:
    49. break;
    50. default:
    51. break;
    52. }
    53. return cellValue;
    54. }




    13、常用单元格边框格式

    Java代码

    1. HSSFCellStyle style = wb.createCellStyle();
    2. style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框
    3. style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框
    4. style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
    5. style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
    6. HSSFCellStyle style = wb.createCellStyle();
    7. style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框
    8. style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框
    9. style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
    10. style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框




    14、设置字体和内容位置

    Java代码

    1. HSSFFont f = wb.createFont();
    2. f.setFontHeightInPoints((short) 11);//字号
    3. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗
    4. style.setFont(f);
    5. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
    6. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
    7. style.setRotation(short rotation);//单元格内容的旋转的角度
    8. HSSFDataFormat df = wb.createDataFormat();
    9. style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式
    10. cell.setCellFormula(string);//给单元格设公式
    11. style.setRotation(short rotation);//单元格内容的旋转的角度
    12. HSSFFont f = wb.createFont();
    13. f.setFontHeightInPoints((short) 11);//字号
    14. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗
    15. style.setFont(f);
    16. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
    17. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
    18. style.setRotation(short rotation);//单元格内容的旋转的角度
    19. HSSFDataFormat df = wb.createDataFormat();
    20. style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式
    21. cell.setCellFormula(string);//给单元格设公式
    22. style.setRotation(short rotation);//单元格内容的旋转的角度




    15、插入图片

    Java代码

    1. //先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
    2. ByteArrayOutputStream byteArrayOut = new     ByteArrayOutputStream();
    3. BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));
    4. ImageIO.write(bufferImg,"jpg",byteArrayOut);
    5. //读进一个excel模版
    6. FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");
    7. fs = new POIFSFileSystem(fos);
    8. //创建一个工作薄
    9. HSSFWorkbook wb = new HSSFWorkbook(fs);
    10. HSSFSheet sheet = wb.getSheetAt(0);
    11. HSSFPatriarch patriarch =     sheet.createDrawingPatriarch();
    12. HSSFClientAnchor anchor = new     HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);
    13. patriarch.createPicture(anchor ,     wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));    
    14. //先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
    15. ByteArrayOutputStream byteArrayOut = new     ByteArrayOutputStream();
    16. BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));
    17. ImageIO.write(bufferImg,"jpg",byteArrayOut);
    18. //读进一个excel模版
    19. FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");
    20. fs = new POIFSFileSystem(fos);
    21. //创建一个工作薄
    22. HSSFWorkbook wb = new HSSFWorkbook(fs);
    23. HSSFSheet sheet = wb.getSheetAt(0);
    24. HSSFPatriarch patriarch =     sheet.createDrawingPatriarch();
    25. HSSFClientAnchor anchor = new     HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);
    26. patriarch.createPicture(anchor ,     wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));    




    16、调整工作表位置

    Java代码

    1. HSSFWorkbook wb = new HSSFWorkbook();
    2. HSSFSheet sheet = wb.createSheet("format     sheet");
    3. HSSFPrintSetup ps = sheet.getPrintSetup();
    4. sheet.setAutobreaks(true);
    5. ps.setFitHeight((short)1);
    6. ps.setFitWidth((short)1);
    7. HSSFWorkbook wb = new HSSFWorkbook();
    8. HSSFSheet sheet = wb.createSheet("format     sheet");
    9. HSSFPrintSetup ps = sheet.getPrintSetup();
    10. sheet.setAutobreaks(true);
    11. ps.setFitHeight((short)1);
    12. ps.setFitWidth((short)1);




    17、设置打印区域

    Java代码

    1. HSSFSheet sheet = wb.createSheet("Sheet1");
    2. wb.setPrintArea(0, "$A$1:$C$2");
    3. HSSFSheet sheet = wb.createSheet("Sheet1");
    4. wb.setPrintArea(0, "$A$1:$C$2");



    18、标注脚注

    Java代码

    1. HSSFSheet sheet = wb.createSheet("format     sheet");
    2. HSSFFooter footer = sheet.getFooter()
    3. footer.setRight( "Page " +     HSSFFooter.page() + " of " + HSSFFooter.numPages() );
    4. HSSFSheet sheet = wb.createSheet("format     sheet");
    5. HSSFFooter footer = sheet.getFooter()
    6. footer.setRight( "Page " +     HSSFFooter.page() + " of " + HSSFFooter.numPages() );



    19、在工作单中清空行数据,调整行位置

    Java代码

    1. HSSFWorkbook wb = new HSSFWorkbook();
    2. HSSFSheet sheet = wb.createSheet("row     sheet");
    3. // Create various cells and rows for spreadsheet.
    4. // Shift rows 6 - 11 on the spreadsheet to the top     (rows 0 - 5)
    5. sheet.shiftRows(5, 10, -5);
    6. HSSFWorkbook wb = new HSSFWorkbook();
    7. HSSFSheet sheet = wb.createSheet("row     sheet");
    8. // Create various cells and rows for spreadsheet.
    9. // Shift rows 6 - 11 on the spreadsheet to the top     (rows 0 - 5)
    10. sheet.shiftRows(5, 10, -5);



    20、选中指定的工作表

    Java代码

    1. HSSFSheet sheet = wb.createSheet("row     sheet");
    2. heet.setSelected(true);
    3. HSSFSheet sheet = wb.createSheet("row     sheet");
    4. heet.setSelected(true);




    21、工作表的放大缩小

    Java代码

    1. HSSFSheet sheet1 = wb.createSheet("new     sheet");
    2. sheet1.setZoom(1,2); // 50 percent magnification
    3. HSSFSheet sheet1 = wb.createSheet("new     sheet");
    4. sheet1.setZoom(1,2); // 50 percent magnification




    22、头注和脚注

    Java代码

    1. HSSFSheet sheet = wb.createSheet("new     sheet");
    2. HSSFHeader header = sheet.getHeader();
    3. header.setCenter("Center Header");
    4. header.setLeft("Left Header");
    5. header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +
    6. HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic     font and size 16");
    7. HSSFSheet sheet = wb.createSheet("new     sheet");
    8. HSSFHeader header = sheet.getHeader();
    9. header.setCenter("Center Header");
    10. header.setLeft("Left Header");
    11. header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +
    12. HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic     font and size 16");



    23、自定义颜色

    Java代码

    1. HSSFCellStyle style = wb.createCellStyle();
    2. style.setFillForegroundColor(HSSFColor.LIME.index);
    3. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);    
    4. HSSFFont font = wb.createFont();
    5. font.setColor(HSSFColor.RED.index);
    6. style.setFont(font);
    7. cell.setCellStyle(style);
    8. HSSFCellStyle style = wb.createCellStyle();
    9. style.setFillForegroundColor(HSSFColor.LIME.index);
    10. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);    
    11. HSSFFont font = wb.createFont();
    12. font.setColor(HSSFColor.RED.index);
    13. style.setFont(font);
    14. cell.setCellStyle(style);




    24、填充和颜色设置

    Java代码

    1. HSSFCellStyle style = wb.createCellStyle();
    2. style.setFillBackgroundColor(HSSFColor.AQUA.index);
    3. style.setFillPattern(HSSFCellStyle.BIG_SPOTS);
    4. HSSFCell cell = row.createCell((short) 1);
    5. cell.setCellValue("X");
    6. style = wb.createCellStyle();
    7. style.setFillForegroundColor(HSSFColor.ORANGE.index);    
    8. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);    
    9. cell.setCellStyle(style);
    10. HSSFCellStyle style = wb.createCellStyle();
    11. style.setFillBackgroundColor(HSSFColor.AQUA.index);
    12. style.setFillPattern(HSSFCellStyle.BIG_SPOTS);
    13. HSSFCell cell = row.createCell((short) 1);
    14. cell.setCellValue("X");
    15. style = wb.createCellStyle();
    16. style.setFillForegroundColor(HSSFColor.ORANGE.index);    
    17. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);    
    18. cell.setCellStyle(style);




    25、强行刷新单元格公式

    Java代码

    1. HSSFFormulaEvaluator eval=new     HSSFFormulaEvaluator((HSSFWorkbook) wb);
    2. privatestaticvoid updateFormula(Workbook wb,Sheet s,int row){
    3. Row r=s.getRow(row);
    4. Cell c=null;
    5. FormulaEcaluator eval=null;
    6. if(wb instanceof HSSFWorkbook)
    7. eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);
    8. elseif(wb instanceof XSSFWorkbook)
    9. eval=new XSSFFormulaEvaluator((XSSFWorkbook) wb);
    10. for(int i=r.getFirstCellNum();i<r.getLastCellNum();i++){    
    11. c=r.getCell(i);
    12. if(c.getCellType()==Cell.CELL_TYPE_FORMULA)
    13. eval.evaluateFormulaCell(c);
    14. }
    15. }
    16. HSSFFormulaEvaluator eval=new     HSSFFormulaEvaluator((HSSFWorkbook) wb);
    17. privatestaticvoid updateFormula(Workbook wb,Sheet s,int row){
    18. Row r=s.getRow(row);
    19. Cell c=null;
    20. FormulaEcaluator eval=null;
    21. if(wb instanceof HSSFWorkbook)
    22. eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);
    23. elseif(wb instanceof XSSFWorkbook)
    24. eval=new XSSFFormulaEvaluator((XSSFWorkbook) wb);
    25. for(int i=r.getFirstCellNum();i<r.getLastCellNum();i++){    
    26. c=r.getCell(i);
    27. if(c.getCellType()==Cell.CELL_TYPE_FORMULA)
    28. eval.evaluateFormulaCell(c);
    29. }
    30. }




    说明:FormulaEvaluator提供了evaluateFormulaCell(Cell cell)方法,计算公式保存结果,但不改变公式。而evaluateInCell(Cell cell) 方法是计算公式,并将原公式替换为计算结果,也就是说该单元格的类型不在是Cell.CELL_TYPE_FORMULA而是Cell.CELL_TYPE_NUMBERICHSSFFormulaEvaluator提供了静态方法evaluateAllFormu

    laCells(HSSFWorkbookwb) ,计算一个Excel文件的所有公式,用起来很方便。
    展开全文
  • 一、介绍1.POI Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计...POI可以通过操作SS,SL,WP操作Excel,PowerPoint,Word 它的官网h

    一、介绍


    1.POI

    • Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。

    • POI可以通过操作SS,SL,WP操作Excel,PowerPoint,Word

    • 它的官网http://poi.apache.org/

    • 注:Excel (SS=HSSF+XSSF+SXSSF),PowerPoint (SL=HSLF+XSLF),Word (WP=HWPF+XWPF)SS官网介绍

    2.HSSF

    • 全称为Horrible SpreadSheet Format 中文翻译为讨厌的电子表格格式
    • HSSF是POI项目的纯java实现,可以操作Excel文件(97-2007)格式(.xls)

    3.XSSF

    • XSSF是POI项目的纯java实现,可以操作Excel文件(2007)格式(.xslx)

    4.SXSSF

    • 自POI版本3.8-beta3 以来, 提供了新的API-------一个在 XSSF 之上构建的低内存占用空间的SXSSF
    • SXSSF是 XSSF 的 API 兼容流扩展, 在必须生成非常大的电子表格时使用,而且在堆空间使用方面是有限的。
    • SXSSF通过限制访问,是一个滑动窗口内的行实现低内存占用,而XSSF可以访问文档中的所有行。不在窗口中的旧行变得无法访问,因为它们已经被写入磁盘。
    • 就我认为,SXSSF专门用来处理大量数据的。

    二、下载jar包


    1. 官网下载jar包

      poi

      可以下载jar包,和它的源代码

      jar包和源代码

    2. 下载下来解压,得到一个文件夹,里面包含很多jar包和html文档,jar包具体作用,百度得到一个答案仅供参考

    3. 官网例子测试,暂时所以先用最核心的poi.jar

      1. 前几个创建HSSFWorkbook时,操作xls文件没有问题,等到使用WorkbookFactory时,会报异常,把poi-ooxml.jar导进去,正常。
      2. 新版本的常量没有放在接口里,都放在了枚举里,所以官网里有些例子,使用这个版本的jar包,会报错,例子是旧版的,需要把接口里的静态变量修改到枚举里。这时关联源码,可以找到方法定义,找到参数,找到枚举,找到枚举实例,使用名字差不多的,可能会有差别,不过都差不多。
      3. 接下来创建XSSFWorkbook对象时会报错,又是没有找到类的异常,根据类的名字依次导入jar包
        • poi-ooxml-schemas.jar
        • commons-collections.jar
        • xmlbeans.jar
      public static void main(String[] args) throws IOException {
      		 Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();不可以,会无法打开
      
      	        Sheet sheet = wb.createSheet();
      	        Row row = sheet.createRow((short) 2);
      	        row.setHeightInPoints(30);
      	        
      	        createCell(wb, row, (short) 0, HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
      	        createCell(wb, row, (short) 1, HorizontalAlignment.CENTER_SELECTION, VerticalAlignment.BOTTOM);
      	        createCell(wb, row, (short) 2, HorizontalAlignment.DISTRIBUTED, VerticalAlignment.CENTER);
      	        createCell(wb, row, (short) 3, HorizontalAlignment.GENERAL, VerticalAlignment.CENTER);
      	        createCell(wb, row, (short) 4, HorizontalAlignment.JUSTIFY, VerticalAlignment.JUSTIFY);
      	        createCell(wb, row, (short) 5, HorizontalAlignment.LEFT, VerticalAlignment.TOP);
      	        createCell(wb, row, (short) 6, HorizontalAlignment.RIGHT, VerticalAlignment.TOP);
      	        FileOutputStream fileOut = new FileOutputStream("xssf-align.xlsx");
      	        wb.write(fileOut);
      	        fileOut.close();
      	}
      	private static void createCell(Workbook wb, Row row, short column, HorizontalAlignment halign, VerticalAlignment valign) {
              Cell cell = row.createCell(column);
              cell.setCellValue("Align It");
              CellStyle cellStyle = wb.createCellStyle();
              cellStyle.setAlignment(halign);
              cellStyle.setVerticalAlignment(valign);
              cell.setCellStyle(cellStyle);
          }
      

    以下是官方原版的,使用这个版本3.17会出错。

    public static void main(String[] args)  throws Exception {
    	        Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
    	
    	        Sheet sheet = wb.createSheet();
    	        Row row = sheet.createRow((short) 2);
    	        row.setHeightInPoints(30);
    	
    	        createCell(wb, row, (short) 0, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_BOTTOM);
    	        createCell(wb, row, (short) 1, CellStyle.ALIGN_CENTER_SELECTION, CellStyle.VERTICAL_BOTTOM);
    	        createCell(wb, row, (short) 2, CellStyle.ALIGN_FILL, CellStyle.VERTICAL_CENTER);
    	        createCell(wb, row, (short) 3, CellStyle.ALIGN_GENERAL, CellStyle.VERTICAL_CENTER);
    	        createCell(wb, row, (short) 4, CellStyle.ALIGN_JUSTIFY, CellStyle.VERTICAL_JUSTIFY);
    	        createCell(wb, row, (short) 5, CellStyle.ALIGN_LEFT, CellStyle.VERTICAL_TOP);
    	        createCell(wb, row, (short) 6, CellStyle.ALIGN_RIGHT, CellStyle.VERTICAL_TOP);
    	
    	        // Write the output to a file
    	        FileOutputStream fileOut = new FileOutputStream("xssf-align.xlsx");
    	        wb.write(fileOut);
    	        fileOut.close();
    	
    	    }
    	
    	    /**
    	     * Creates a cell and aligns it a certain way.
    	     *
    	     * @param wb     the workbook
    	     * @param row    the row to create the cell in
    	     * @param column the column number to create the cell in
    	     * @param halign the horizontal alignment for the cell.
    	     */
    	    private static void createCell(Workbook wb, Row row, short column, short halign, short valign) {
    	        Cell cell = row.createCell(column);
    	        cell.setCellValue("Align It");
    	        CellStyle cellStyle = wb.createCellStyle();
    	        cellStyle.setAlignment(halign);
    	        cellStyle.setVerticalAlignment(valign);
    	        cell.setCellStyle(cellStyle);
    	    }
    
    展开全文
  • :用jdk自带的输入输出流 1://可以先设置response编码,使响应给浏览器的东西不是...自己可以设置request来拼路径(xlsx是excel表文件的后缀格式),(filepath是要下载excel文件的相对路劲,也就是文件名比如下载leaves

    <一>:用jdk自带的输入输出流

    1://可以先设置response编码,使响应给浏览器的东西不是乱码;

    response.setCharacterEncoding(" UTF-8");

    2://得到要下载的东西存放的地址,也就是绝对路径;自己可以设置request来拼路径(xlsx是excel表文件的后缀格式),(filepath是要下载excel文件的相对路劲,也就是文件名比如下载leavestu.xlsx则filepath=leavestu)

    (自家的jar包下的方法,在core-api下)

    String filename=CoreplusEnv.getRealPath(''/_upload/ ''+filepath+".xlsx");

    3://以当前的绝对路径创建一个file对象;(文件在磁盘里,而程序要用他,就得创建个该路径的实例,也就是一个关联通道才能操作它,当然还有其他方法可用来创建)(自来水开水的思想)

    File file=new File(filename);

    4://创建一个文件输入流(字节输入流)(此处也是一样起一个关联通道的作用,而他的read方法可以去读下载excel文件中的内容)

    FileInputStream is = new FileInputStream(file);

    5://用poi技术也就是相关价包来提供创建此字节流的工作簿对象(此处用xssf)

    首先,POI提供了HSSF、XSSF以及SXSSF三种方式操作Excel。他们的区别如下:

    HSSF:是操作Excel97-2003版本,扩展名为.xls。

    XSSF:是操作Excel2007版本开始,扩展名为.xlsx。

    SXSSF:是在XSSF基础上,POI3.8版本开始提供的一种支持低内存占用的操作方式,扩展名为.xlsx。

    1、支持的行数、列数

    Excel97-2003版本,一个sheet最大行数65536,最大列数256。

    Excel2007版本开始,一个sheet最大行数1048576,最大列数16384。

    2、文件大小

    .xlsx文件比.xls的压缩率高,也就是相同数据量下,.xlsx的文件会小很多。

    3、兼容性

    Excel97-2003版本是不能打开.xlsx文件的。

    Excel2007开始的版本是可以打开.xls文件的。

     当然海量数据的导出肯定是推荐SXSSF的方式

    Workbook    wk=new  XSSFWorkbook(is);

    6:设置响应请求的样式

    response.setContentType("application/vnd.ms-excel");

    //设置表头


    设置response的头报文数据,content-disposition为浏览器另存为.attachment以附件形式下载,filename下载后的文件名  new String(str.getBytes("gb2312"),"iso8859-1")文件名从iso8859-1编码转换为gb2312编码.
    eg:
    response.setHeader("Content-disposition","attachment;filename="+new String(str.getBytes("gb2312"),"iso8859-1"));
    
    

    response.setHeader("Content-disposition", "attachment;filename="  
                   + file.getName())

    7:得到此输入流的输出流,response是响应客户端的对象,在服务器里,而他有一个得到输出流方法,来创建一个给客户端要输出的内容流;

    OutputStream  os=response.getOutputStream();

    8:用工作簿的write方法输出在工作簿里

     wk.write(os);

    9:关闭输出流

    os.close();




          

    展开全文
  • 在上一篇文章《使用poi读写Excel》中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类。  该工具类主要完成的功能是:读取Excel、汇总Excel的功能。在读取时,可以设定开始和...
  • Java中使用POI操作Excel

    2018-07-16 16:00:13
    这里简单的分享下POI中HSSF和XSSF来操作Excel。使用POI之前你需要在maven中引入以下依赖:&lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;artifactId&gt;...
  • poi的读取的三种模式 模式 说明 读写性 SXSSF 内存中保留一定行数数据,超过行数,将索引最低的数据刷入硬盘 只写 eventmodel 基于事件驱动,SAX的方式解析excel,cup和内存消耗低 只读 ...
  • POI操作Excel

    2019-07-09 18:55:55
    第一个问题:如何使用POI创建Excel表格并将内容输入到Excel表格? //创建工作簿 XSSF代表10版的Excel(HSSF是03版的Excel) XSSFWorkbook wb = new XSSFWorkbook(); //使用工作簿创建工作表 ...
  • POI操作Excel文档,帮助文档
  • POI操作Excel换行

    2017-06-05 16:48:32
    POI操作Excel换行网上很多博客操作Excel换行的都是Office2007之前的格式,一直没找到支持扩展名为.xlsx的换行方式,被折腾到要死,无奈之下只能去官网看看,发现了同时支持.xlsx和.xls两种扩展的。现在列出如下: ...
  • 接下来介绍一下采用java操作excel的第三方框架:poi,对于poi,我想搞过批量导入、导出数据的博友都应该熟悉(当然啦,批量导入导出excel数据还有jxl,这里我就不介绍了!)。poi是apache jakarta项目的子项目,主要...
  • 一、简介 POI提供API给Java程序对Microsoft Office格式档案读和写的功能,我们可以使用...POI操作Excel主要用到的类有两个: HSSF(.xls后缀):提供读写Microsoft Excel XLS格式档案的功能。 XSSF(.xlsx后缀):提...
  • poi操作excel 单元格的换行 import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss....
  • 上一篇博文介绍了poi操作excel的基本读写操作后,接下来,介绍一下在项目中的实际用途:批量导入、批量导出功能。因为重点知识介绍批量导入导出excel功能,故而项目整体的搭建后台用jdbc与struts2,前端页面用jquery...
  • java POI 操作EXCEL小例子+各种属性
  • POI操作Excel 合并单元格 边框问题解决方法,这个方法是我亲自测试,并运用于项目中的,可以放心使用,还一并写出了很多注释,其中有写poi的bug的解决方法
  • java使用poi操作excel需要的所有jar包(poi3.8版本),里面有poi-3.8-20120326.jar、poi-ooxml-3.8-20120326.jar、poi-ooxml-schemas-3.8-20120326.jar、dom4j-1.6.1.jar、xmlbeans-2.3.0.jar
  • poi操作excel

    2020-07-29 14:18:19
    使用poi上传下载excel,包含springboot+mybatis+mysql+poi
  • 为了方便地使用poi操作excel,在这里,使用类BubbleSheet对Poi中的Sheet进行封装,BubbleSheet类如下所示:import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFPalette...
  • java poi 操作Excel

    2020-07-30 23:31:53
    java操作Excelpoi jar包 本人已亲自测试,里面有齐全的用户手册
1 2 3 4 5 ... 20
收藏数 16,680
精华内容 6,672
关键字:

poi操作excel