关于java写入Excel文件网上很多资料,现在结合类目数据做一个小功能.
如果将excel中类目数据保存到数据库类目表呢?
![7f1da616f6489b0d2ce232cc6b64dd74.png](https://i-blog.csdnimg.cn/blog_migrate/15588c4577834246cd276aa6c4b8f8d0.jpeg)
![0f42e67e04dc19607d82a18c8d0f1bab.png](https://i-blog.csdnimg.cn/blog_migrate/a623c936a0dfe076ecba4580588b4580.jpeg)
上代码:
/**
readExcel类
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.yuanmao.dataservice.apps.vo.CategoryVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.WorkbookFactory;
@Slf4j
public class ReadExcel {
private static String XLSX = "C:UsersgoldenDesktopaaaXX(产线)类目清单0308.xlsx";
/**
* 读取Excel数据方法 (单个sheet)
*
* @param filePath
* @return
*/
public static List<CategoryVO> readFromXLSX(String filePath) {
File excelFile = null;
// Excel文件对象
InputStream is = null;
// 输入流对象
String cellStr = null;
// 单元格,最终按字符串处理
List<CategoryVO> studentList = new ArrayList<CategoryVO>();
// 返回封装数据的List
CategoryVO employee = null;
// 每一个雇员信息对象
try {
excelFile = new File(filePath);
is = new FileInputStream(excelFile);
// 获取文件输入流
org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(is);
org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);
// 开始循环遍历行,表头不处理,从1开始
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
employee = new CategoryVO();
// 实例化Student对象
Row row = sheet.getRow(i);
// 获取行对象
if (row == null) {
// 如果为空,不处理
continue;
}
// 循环遍历单元格
for (int j = 0; j < row.getLastCellNum(); j++) {
Cell cell = row.getCell(j);
// 获取单元格对象
if (cell == null) {
// 单元格为空设置cellStr为空串
cellStr = "";
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
// 对布尔值的处理
cellStr = String.valueOf(cell.getBooleanCellValue());
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
// 对数字值的处理
cellStr = cell.getNumericCellValue() + "";
String[] split = StringUtils.split(cellStr, ".");
cellStr = split[0];
} else {
// 其余按照字符串处理
cellStr = cell.getStringCellValue();
}
// 下面按照数据出现位置封装到bean中
if (j == 0) {
employee.setCategoryCode1(cellStr);
} else if (j == 1) {
employee.setCategoryName1(cellStr);
} else if (j == 2) {
employee.setCategoryCode2(cellStr);
} else if (j == 3) {
employee.setCategoryName2(cellStr);
} else if (j == 4) {
employee.setCategoryCode3(cellStr);
} else if (j == 5) {
employee.setCategoryName3(cellStr);
} else if (j == 6) {
employee.setCategoryCode4(cellStr);
} else {
employee.setCategoryName4(cellStr);
}
}
studentList.add(employee);
// 数据装入List
}
} catch (IOException e) {
log.error(e.getMessage(), e);
} catch (InvalidFormatException e) {
// TODO Auto-generated catch block
} finally {
// 关闭文件流
if (is != null) {
try {
is.close();
} catch (IOException e) {
log.error(e.getMessage(),e);
}
}
}
return studentList;
}
/**
* 主函数
*
* @param args
*/
public static void main(String[] args) {
List<CategoryVO> list = readFromXLSX(XLSX);
for (CategoryVO employee : list) {
System.out.println(employee);
}
}
}
![98c28496f306c982877fb3ee1afaa53f.png](https://i-blog.csdnimg.cn/blog_migrate/8696d4d39ab7a7c8e6ae89d2d04a6e91.jpeg)
只需要传一个excle文件地址路径到read方法中,就可以将excel类目数据保存到数据库了.