Java poi的基本操作(直接ctlr+c,ctrl+v)

poi进行读取

读xls和xlsx
public String readXls(String path) {
    
    
        String text = "";
        try {
    
    
            FileInputStream is = new FileInputStream(path);
            HSSFWorkbook excel = new HSSFWorkbook(is);
            //获取第一个sheet
            HSSFSheet sheet0 = excel.getSheetAt(0);
            for (Iterator rowIterator = sheet0.iterator(); rowIterator.hasNext(); ) {
    
    
                HSSFRow row = (HSSFRow) rowIterator.next();
                for (Iterator iterator = row.cellIterator(); iterator.hasNext(); ) {
    
    
                    HSSFCell cell = (HSSFCell) iterator.next();
                    //根据单元的的类型 读取相应的结果
                    if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) text += cell.getStringCellValue() + "\t";
                    else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
                        text += cell.getNumericCellValue() + "\t";
                    else if (cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA) text += cell.getCellFormula() + "\t";
                }
                text += "\n";
            }
        } catch (Exception e) {
    
    
            // TODO Auto-generated catch block
            e.printStackTrace();
//            log.warn(e);
        }

        return text;
    }

    public static String readXlsx(String path) {
    
    
        String text = "";
        try {
    
    
            OPCPackage pkg = OPCPackage.open(path);
            XSSFWorkbook excel = new XSSFWorkbook(pkg);
            //获取第一个sheet
            XSSFSheet sheet0 = excel.getSheetAt(0);
            for (Iterator rowIterator = sheet0.iterator(); rowIterator.hasNext(); ) {
    
    
                XSSFRow row = (XSSFRow) rowIterator.next();
                for (Iterator iterator = row.cellIterator(); iterator.hasNext(); ) {
    
    
                    XSSFCell cell = (XSSFCell) iterator.next();
                    //根据单元的的类型 读取相应的结果
                    if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) text += cell.getStringCellValue() + "\t";
                    else if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC)
                        text += cell.getNumericCellValue() + "\t";
                    else if (cell.getCellType() == XSSFCell.CELL_TYPE_FORMULA) text += cell.getCellFormula() + "\t";
                }
                text += "\n";
            }
        } catch (Exception e) {
    
    
            // TODO Auto-generated catch block
            e.printStackTrace();
//            log.warn(e);
        }

        return text;
    }

poi进行操作Excel数据

public static void main(String[] args) throws IOException {
    
    
    //==========================================创建Excel文件=====================================================
    //==========================================创建Excel文件=====================================================
    //==========================================创建Excel文件=====================================================
    String filePath = "C:/Users/小zz/OneDrive/桌面/poiTest.xls";//文件路径
    HSSFWorkbook workbook = new HSSFWorkbook();//创建Excel文件(Workbook)
    //可以创建多个表
    HSSFSheet sheet = workbook.createSheet("地区表数据");//创建一个地区表表(Sheet)
    //sheet = workbook.createSheet();//创建多个工作表(Sheet)

    //==========================================利用sheet创建内容=====================================================
    //==========================================利用sheet创建内容=====================================================
    //==========================================利用sheet创建内容=====================================================
    //该段表示创建一行(即第一行)
    HSSFRow row = sheet.createRow(0);// 创建行,从0开始
    HSSFCell cell = row.createCell(0);// 创建行的单元格,也是从0开始
    cell.setCellValue("小zz");// 设置单元格内容
    //该段设置列值,可以从0开始(表示第一列)
    row.createCell(1).setCellValue(false);// 设置单元格内容,重载
    row.createCell(2).setCellValue(new Date());// 设置单元格内容,重载
    row.createCell(3).setCellValue(12.345);// 设置单元格内容,重载

    //该段表示创建一行(即第二行)
    row = sheet.createRow(1);// 创建行,从0开始
    cell = row.createCell(0);// 创建行的单元格,也是从0开始
    cell.setCellValue("我就是小zz");
    //该段设置列值,可以从0开始(表示第一列)
    row.createCell(1).setCellValue("我来啦");
    row.createCell(2).setCellValue("我爱hi");
    row.createCell(3).setCellValue("外省");

    //==========================================创建文档摘要信息(属性信息),在文件右键点击属性=====================================================
    //==========================================创建文档摘要信息(属性信息),在文件右键点击属性=====================================================
    //==========================================创建文档摘要信息(属性信息),在文件右键点击属性=====================================================
    workbook.createInformationProperties();//创建文档信息
    DocumentSummaryInformation dsi=workbook.getDocumentSummaryInformation();//摘要信息
    dsi.setCategory("小zz的Excel文件");//类别
    dsi.setManager("小zz");//管理者
    dsi.setCompany("小zz集团");//公司
    SummaryInformation si = workbook.getSummaryInformation();//摘要信息
    si.setSubject("怎样让客户更愿意拿出钱财来消费");//主题
    si.setTitle("小zz测试文档");//标题
    si.setAuthor("小zz");//作者
    si.setComments("POI测试文档");//备注

    //==========================================创建批注=====================================================
    //==========================================创建批注=====================================================
    //==========================================创建批注=====================================================
    HSSFPatriarch patr = sheet.createDrawingPatriarch();
    HSSFClientAnchor anchor = patr.createAnchor(0, 0, 0, 0, 5, 1, 8,5);//创建批注位置
    // dx1 第1个单元格中x轴的偏移量,dy1 第1个单元格中y轴的偏移量,dx2 第2个单元格中x轴的偏移量,row1 第1个单元格的行号,col2 第2个单元格的列号,row2 第2个单元格的行号
    HSSFComment comment = patr.createCellComment(anchor);//创建批注
    comment.setString(new HSSFRichTextString("这是一个批注段落!"));//设置批注内容
    comment.setAuthor("小zz");//设置批注作者
    comment.setVisible(true);//设置批注默认显示
    cell = sheet.createRow(5).createCell(1);
    cell.setCellValue("测试");
    cell.setCellComment(comment);//把批注赋值给单元格



    //==========================================创建页眉和页脚=====================================================
    //==========================================创建页眉和页脚=====================================================
    //==========================================创建页眉和页脚=====================================================
    HSSFHeader header =sheet.getHeader();//得到页眉
    header.setLeft("页眉左边");
    header.setRight("页眉右边");
    header.setCenter("页眉中间");
    HSSFFooter footer =sheet.getFooter();//得到页脚
    footer.setLeft("页脚左边");
    footer.setRight("页脚右边");
    footer.setCenter("页脚中间");




    FileOutputStream out = new FileOutputStream(filePath);
    workbook.write(out);//保存Excel文件
    System.out.println("OK!");
    out.close();//关闭文件流
}

注:文章来源:网络总结,具体来源(及更多操作:更多操作

猜你喜欢

转载自blog.csdn.net/z1783883121/article/details/102896398