POI读取Excel数据生成sql
如果是Java的maven项目可以直接引入依赖。
依赖包:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
或者到Apache官网下载POI的库,下载链接地址:https://poi.apache.org/download.html,下载后解压,将jar包导入到项目中,如下示例:
下载poi-bin-4.0.1-20181203.zip解压后,得到下面文件:
把图中的jar文件导入到自己的项目中,就可以使用POI,用Java读Excel表格数据了。
现在要读取一个名为test.xls的文件,内容是这样的:
写一个Java程序:
public class readExcel {
public static void main(String[] args) {
new readExcel ().read();
}
public void read() {
File file = new File("E:\\svn-localfile\\资料\\二\\test.xls");
//InputStream inputStream = null;
Workbook workbook = null;
try {
//inputStream = new FileInputStream(file);
//workbook = WorkbookFactory.create(inputStream);
// 工作表
workbook = WorkbookFactory.create(file);
//inputStream.close();
// 表个数
int numberOfSheets = workbook.getNumberOfSheets();
// 遍历表
for (int i = 0; i < numberOfSheets; i++) {
Sheet sheet = workbook.getSheetAt(i);
//总行数
int rowLength = sheet.getLastRowNum() + 1;
//根据第一行,获取总列数
Row row = sheet.getRow(0);
//总列数
int colLength = row.getLastCellNum(); //row.getPhysicalNumberOfCells();
//得到指定的单元格
Cell EquivalentId = row.getCell(0);
Cell AliaseName = row.getCell(0);
Cell AliaseNameEn = row.getCell(0);
Cell RuleNo = row.getCell(0);
Cell GoodsName = row.getCell(0);
Cell SourceId = row.getCell(0);
Cell DataSourceCode = row.getCell(0);
System.out.println("行数:" + rowLength + ",列数:" + colLength);
//读数据
for (int j= 1; j < rowLength; j++) {
// i=1 , 拿到第2行的数据
row = sheet.getRow(j);
// 获取列的内容
EquivalentId = row.getCell(0); //第一个单元格
AliaseName = row.getCell(1); //第二个单元格
AliaseNameEn = row.getCell(2); //第三个单元格
// insert into TBL_ALIASENAME
// 我这里直接打印到控制台了,也可以使用io流写入到文件。
System.out.println(
"insert into TBL_ALIASENAME(EQUIVALENTID,ALIASENAME,ALIASENAMEEN) VALUES('" + EquivalentId + "','" + AliaseName + "','" + AliaseNameEn + "');"
);
}
}
} catch(Exception e){
e.printStackTrace();
}
}
}
得到以下结果:
另:
//获取单元格各类型值,返回字符串类型
public static String getCellValueByCell(Cell cell) {
//判断是否为null或空串
if (cell == null || cell.toString().trim().equals("")) {
return "";
}
String cellValue = "";
int cellType = cell.getCellType();
// 以下是判断数据的类型
switch (cellType) {
case HSSFCell.CELL_TYPE_NUMERIC: // 数字
if (0 == cell.getCellType()) {//判断单元格的类型是否则NUMERIC类型
if (HSSFDateUtil.isCellDateFormatted(cell)) {// 判断是否为日期类型
Date date = cell.getDateCellValue();
DateFormat formater = new SimpleDateFormat(
"yyyy-MM-dd HH:mm");
cellValue = formater.format(date);
} else {
cellValue = cell.getNumericCellValue() + "";
}
}
break;
case HSSFCell.CELL_TYPE_STRING: // 字符串
cellValue = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
cellValue = cell.getBooleanCellValue() + "";
break;
case HSSFCell.CELL_TYPE_FORMULA: // 公式
cellValue = cell.getCellFormula() + "";
break;
case HSSFCell.CELL_TYPE_BLANK: // 空值
cellValue = "";
break;
case HSSFCell.CELL_TYPE_ERROR: // 故障
cellValue = "非法字符";
break;
default:
cellValue = "未知类型";
break;
}
return cellValue;
}