1. 程式人生 > >JAVA匯入匯出EXCEL(POI)

JAVA匯入匯出EXCEL(POI)

首先去官網下載POI的ja包
http://poi.apache.org/download.html#POI-3.15
這裡寫圖片描述
加入jar包(紅色部分就夠了)
這裡寫圖片描述
然後就是編寫程式碼了
建立java類 (此處程式碼找的一位網友寫的,感覺很簡單明瞭,就拿來用了,勿噴)
若想操作資料庫,寫個連線,把讀取的程式碼換下,返回一個List集合,for迴圈中加以修改
list傳入寫的方法裡迴圈插入就ok了,匯出也一樣不做類似修改了
工具類在最後,我的修改在前面

        Users u = null;
        List<Users> list = new ArrayList<Users>();
Sheet sheet1 = wb.getSheetAt(0); for (Row row : sheet1) { u = new Users(); String userId = row.getCell(0).getStringCellValue(); String userName = row.getCell(1).getStringCellValue(); String password = row.getCell(2).getStringCellValue();
String sex = row.getCell(3).getStringCellValue(); u.setUserId(Integer.parseInt(userId)); u.setUserName(userName); u.setPassword(password); u.setSex(sex); list.add(u); System.out.println(u.toString()); } return list;
public static void insert(List<Users> list){
        for(Users l:list){
            String sql = "insert into users (userName, password, sex) values(?,?,?)";
            PreparedStatement pstmt = DBUtil.getPstmt(sql);
            try {
                pstmt.setString(1, l.getUserName());
                pstmt.setString(2, l.getPassword());
                pstmt.setString(3, l.getSex());
                DBUtil.update();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                DBUtil.allClose();

            }

        }

    }
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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;

public class ReadWriteExcelUtil {

    public static void read(String filePath) throws IOException {
        String fileType = filePath.substring(filePath.lastIndexOf(".") + 1, filePath.length());
        InputStream stream = new FileInputStream(filePath);
        Workbook wb = null;
        if (fileType.equals("xls")) {
            wb = new HSSFWorkbook(stream);
        } else if (fileType.equals("xlsx")) {
            wb = new XSSFWorkbook(stream);
        } else {
            System.out.println("您輸入的excel格式不正確");
        }
        Sheet sheet1 = wb.getSheetAt(0);
        for (Row row : sheet1) {
            for (Cell cell : row) {
                System.out.print(cell.getStringCellValue() + "  ");
            }
            System.out.println();
        }
    }

    public static boolean write(String outPath) throws Exception {
        String fileType = outPath.substring(outPath.lastIndexOf(".") + 1, outPath.length());
        System.out.println(fileType);
        // 建立工作文件物件
        Workbook wb = null;
        if (fileType.equals("xls")) {
            wb = new HSSFWorkbook();
        } else if (fileType.equals("xlsx")) {
            wb = new XSSFWorkbook();
        } else {
            System.out.println("您的文件格式不正確!");
            return false;
        }
        // 建立sheet物件
        Sheet sheet1 = (Sheet) wb.createSheet("sheet1");
        // 迴圈寫入行資料
        for (int i = 0; i < 5; i++) {
            Row row = (Row) sheet1.createRow(i);
            // 迴圈寫入列資料
            for (int j = 0; j < 8; j++) {
                Cell cell = row.createCell(j);
                cell.setCellValue("測試" + j);
            }
        }
        // 建立檔案流
        OutputStream stream = new FileOutputStream(outPath);
        // 寫入資料
        wb.write(stream);
        // 關閉檔案流
        stream.close();
        return true;
    }


    public static void main(String[] args) {
        try {
            ReadWriteExcelUtil.write("D:" + File.separator + "out.xlsx");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            ReadWriteExcelUtil.read("D:" + File.separator + "out.xlsx");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}