JAVA使用POI操作excel

来源:互联网 发布:班级logo设计软件 编辑:程序博客网 时间:2024/05/19 00:38

原文转自:http://www.tqcto.com/article/code/294898.html

一直想写一个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");
    }
原文转自:编程技术
0 0
原创粉丝点击