侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

JAVA使用POI操作excel

2022-06-17 星期五 / 0 评论 / 0 点赞 / 78 阅读 / 4269 字

一直想写一个poi的使用的总结,话说我第一份正式工作接到的第一个工作就是当时TL让我去整理项目的数据字典,即把内容插入到CSV上,然后把csv的内容插入到数据库中,而且我印象极深的当时使用的就是poi

一直想写一个poi的使用的总结,话说我第一份正式工作接到的第一个工作就是当时TL让我去整理项目的数据字典,即把内容插入到CSV上,然后把csv的内容插入到数据库中,而且我印象极深的当时使用的就是poi。

今天翻以前的笔记,正好是我当时学POI的一些笔记。这里整理一下。

这里提一下,java操作excel的组件除了apache的poi,还有jexcelapi(jxl),其中poi组件的获取地址为poi.apache.org。

poi组件中常用的类有HSSFworkbook表示一个完整的excel表格,HSSFsheet表示excel中的一个工作薄,HSSFRow表示工作薄中的一行,HSSFCell表示一个单元格

下面是一个简单的写入的demo


public static void main(String [] args){        try {            HSSFWorkbook workbook= new HSSFWorkbook();            HSSFSheet sheet= workbook.createSheet("test");            HSSFRow row = sheet.createRow(1);            HSSFCell cell= row.createCell(2);            cell.setCellValue("test");            FileOutputStream os= null;            os = new FileOutputStream("fisrtExcel.xls");            workbook.write(os);            os.flush();            os.close();        } catch (Exception e) {            e.printStackTrace();        }        System.out.println("ok");    }
下面是一个简单的读取demo



try {            FileInputStream file= new FileInputStream("fisrtExcel.xls");            POIFSFileSystem ts= new POIFSFileSystem(file);            HSSFWorkbook wb=new HSSFWorkbook(ts);            HSSFSheet sh= wb.getSheetAt(0);            HSSFRow ro=null;            for (int i = 0; sh.getRow(i)!=null; i++) {                ro=sh.getRow(i);                for (int j = 0; ro.getCell(j)!=null; j++) {                    System.out.print(ro.getCell(j)+"");                }                System.out.println();            }        } catch (Exception e) {            e.printStackTrace();        }        System.out.println("ok");
下面是几个常用的api



//使用公式    cell2.setCellFormula("B2");    //设置列宽    sheet.setColumnWidth(columnIndex, width);    //设置行高    row.setHeight(height);    //设这样式:    HSSFFont font= workbook.createFont();    font.setFontHeightInPoints(height);    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);    font.setFontName("黑体");    HSSFCellStyle style= workbook.createCellStyle();    style.setFont(font);    //style可以设置对齐样式,边框,和格式化日期。    cell.setCellStyle(style);    //合并单元格    sheet.addMergedRegion(region);


我们之前提到了一个jxl的使用。当时在网上也找到了一个使用的demo,可以参考这里:


public static void main(String [] args){        try {            WritableWorkbook wwb = null;            //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象            wwb = Workbook.createWorkbook(new File("jxlexcel"));            if(wwb!=null){                //创建一个可写入的工作表                WritableSheet ws = wwb.createSheet("sheet1", 0);                for(inti=0;i<10;i++){                    for(intj=0;j<5;j++){                        Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");                        ws.addCell(labelC);                    }                }                wwb.write();                wwb.close();            }        } catch (Exception e) {            e.printStackTrace();        }        System.out.println("ok");    }
对于更复杂的内容这里有几个参考文档:


http://www.newxing.com/Tech/Java/Web/Excel_186.html

http://www.yesky.com/18/1886018.shtml


总结一下,poi的使用比较简单,主要是写入和读取的时候计算好读取的位置。而且现在项目中已经封装了一个现成的类,几乎几行代码就可以把结果输出到一个excel中并提供下载,PS:很怀念刚工作时的那段日子。

广告 广告

评论区