poi操作excel

面向对象的思想,首先你要操作一个excel,进行excel的分析,获取整个excel,然后获取sheet,获取row,接下来用row获取col。这样就解决了哦。
接下来看几个重要代码块

 package com;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * Created by kcz on 2016/9/8.
 */
public class Read {
    public List<List<String>>list=new ArrayList<>();
    public static int lastRowNum=0;
    public static int lastCellNum=0;
    public static void main(String[] args) {
        new Read().read("E:\\ExcelTest\\data.xlsx");
        System.out.println("-------------");
        //readXml("d:\\data1.xls");
    }
    public  List<List<String>> read(String fileName) {

        boolean isE2007 = false;    //判断是否是excel2007格式
        if (fileName.endsWith("xlsx"))
            isE2007 = true;
        try {
            InputStream input = new FileInputStream(fileName);  //建立输入流
            Workbook wb = null;
            //根据文件格式(2003或者2007)来初始化
            if (isE2007)
                wb = new XSSFWorkbook(input);
            else
                wb = new HSSFWorkbook(input);
            for (int i = 0; i < wb.getNumberOfSheets(); i++) {//获取每个Sheet表
                Sheet sheet = wb.getSheetAt(i);
                int firstRowNum = sheet.getFirstRowNum();
                lastRowNum = sheet.getLastRowNum();

                for (int j = firstRowNum; j <= lastRowNum; j++) {
                    XSSFRow rowIn = (XSSFRow) sheet.getRow(j);
                    if(rowIn == null) {
                        continue;
                    }
                    int firstCellNum = rowIn.getFirstCellNum();
                     lastCellNum = rowIn.getLastCellNum();
                    List<String>list1=new ArrayList<>();
                    for (int k = firstCellNum; k <= lastCellNum; k++) {
//              XSSFCell cellIn = rowIn.getCell((short) k);
                        XSSFCell cellIn = rowIn.getCell(k);
                        if(cellIn == null) {
                            continue;
                        }

                        int cellType = cellIn.getCellType();
                        if(XSSFCell.CELL_TYPE_STRING != cellType) {
                            continue;
                        }
                        String cellValue = cellIn.getStringCellValue();
                        if(cellValue == null) {
                            continue;
                        }
                        list1.add(cellValue);

                        //System.out.println(cellValue);


                    }
                    list.add(list1);
                }


            }


            }catch (IOException ex) {
            ex.printStackTrace();
        }
        Iterator iterator=  list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
            System.out.println(lastCellNum);
            System.out.println(lastRowNum);
        }

        return list;
        }
    }
package com;
import java.io.*;


import java.util.List;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
 * Created by kcz on 2016/9/8.
 */
public class Write {
    public static int lastRowNum=0;
    public static int lastCellNum=0;
    public static int bt = 0;
    public static void main(String[] args) throws IOException {
        new Write().outputExcelData();
    }

    public void outputExcelData() throws IOException {
       Read read =new Read();
       List<List<String>> lists = read.read("E:\\ExcelTest\\data.xlsx");
     lastRowNum = read.lastRowNum ;
     lastCellNum = read.lastCellNum ;


        String fileName = "E:\\ExcelTest\\测试1.xlsx";
        File file = new File(fileName);
        if (file.exists()) {
            file.delete();
        }
        //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
        Workbook wb = new XSSFWorkbook();


        for (int i = 0; i < lastRowNum; i++) {
            Sheet sheet = wb.createSheet("列表"+i);  //创建一个可写入的工作表

            for (int r=0;r<lastRowNum;r++){
                bt=0;//循环一次结束之后重新置为0
                Row row = sheet.createRow(r);

                for (int c=0;c<lists.get(r).size();c++){
                    Cell cell = row.createCell(c);
                    cell.setCellValue(lists.get(r).get(c));
//                    if(bt>lastCellNum){
//                        break;
//                    }
//                    else {
//                        for (int value=0;value<lastCellNum-1;value++){
//
//                           cell.setCellValue(lists.get(r).get(c));
//
//                        }
//                        bt++;
//                    }

                }
            }

        }
        FileOutputStream fos = new FileOutputStream(file);
        wb.write(fos);//从内存中写入文件中
        fos.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值