JAVA使用POI操作excel

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

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

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

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

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


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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



?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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



?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//使用公式
     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,可以参考这里:


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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:很怀念刚工作时的那段日子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值