使用POI操作Excel

使用的jar和源码:Java_Excel_and_JAR

具体代码:

package com.wll.excelAll;

import java.io.File;

import java.io.FileInputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

import java.text.SimpleDateFormat;

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.ss.usermodel.WorkbookFactory;

import org.apache.poi.ss.usermodel.DateUtil;

public class readExcel {

public static void main(String[] args) {

// 需要读取的文件

readExcel.read("lib/test.xlsx");

}

public static void read(String path) {

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");

try {

// 同时支持Excel 2003、2007、2010

File excelFile = new File(path); // 创建文件对象

FileInputStream is = new FileInputStream(excelFile); // 文件流

Workbook workbook = WorkbookFactory.create(is); // 支持03 07 10格式

int sheetCount = workbook.getNumberOfSheets(); // 工作簿sheet 的数量 默认3张

// 遍历每个Sheet

for (int i = 0; i < 1; i++) {

Connection connection = null;

connection = readExcel.getCon();// 获取数据库链接

StringBuffer ssBuffer = new StringBuffer();

String string = "";

Sheet sheet = workbook.getSheetAt(i);

int rowCount = sheet.getPhysicalNumberOfRows(); // 获取总行数 13

// 遍历每一行

for (int r = 0; r < rowCount; r++) {

StringBuffer sBuffer = new StringBuffer("insert into test values('");

Row row = sheet.getRow(r);

int cellCount = row.getPhysicalNumberOfCells(); // 获取总列数 4

// 遍历每一列

for (int c = 0; c < cellCount; c++) {

Cell cell = row.getCell(c);

int cellType = cell.getCellType();

String cellValue = null;

switch (cellType) {

case Cell.CELL_TYPE_STRING: // 文本 字符串型 1

cellValue = cell.getStringCellValue();

break;

case Cell.CELL_TYPE_NUMERIC: // 数字、日期 数值型 0

if (DateUtil.isCellDateFormatted(cell)) {

cellValue = fmt.format(cell.getDateCellValue()); // 日期型

} else {

cellValue = String.valueOf(cell.getNumericCellValue()); // 数字

}

break;

case Cell.CELL_TYPE_BOOLEAN: // 布尔型 布尔型 4

cellValue = String.valueOf(cell.getBooleanCellValue());

break;

case Cell.CELL_TYPE_BLANK: // 空白 空值 3

cellValue = cell.getStringCellValue();

break;

case Cell.CELL_TYPE_ERROR: // 错误 错误 5

cellValue = "错误";

break;

case Cell.CELL_TYPE_FORMULA: // 公式型 2

cellValue = "公式";

break;

default:

cellValue = "错误";

}

System.out.print(cellValue + "    ");

sBuffer.append(cellValue + "','");

}

System.out.println();

// 拼接执行的SQL语句

string = sBuffer.toString().substring(0, sBuffer.toString().lastIndexOf(","));

string = string + ");";

System.out.println("---sql:" + string);

Statement st = connection.createStatement();

st.execute(string);

ssBuffer.append(string);

}

connection.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

public static Connection getCon() {

Connection connection = null;

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

System.err.println("---error:驱动加载失败");

e.printStackTrace();

}

try {

connection = DriverManager.getConnection(

"jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "root");

} catch (SQLException e) {

System.err.println("---error:获取链接失败");

e.printStackTrace();

}

System.out.println("-----获取链接成功!");

return connection;

}

}