java的poi技术读取和导入Excel
项目结构:
用到的Excel文件:
XlsMain .java 类
//该类有main方法,主要负责运行程序,同时该类中也包含了用poi读取Excel(2003版)
|
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** * * @author Hongten</br> * * 参考地址:http://hao0610.iteye.com/blog/1160678 * */ public class XlsMain { public static void main(String[] args) throws IOException { XlsMain xlsMain = new XlsMain(); XlsDto xls = null ; List<XlsDto> list = xlsMain.readXls(); try { XlsDto2Excel.xlsDto2Excel(list); } catch (Exception e) { e.printStackTrace(); } for ( int i = 0 ; i < list.size(); i++) { xls = (XlsDto) list.get(i); System.out.println(xls.getXh() + " " + xls.getXm() + " " + xls.getYxsmc() + " " + xls.getKcm() + " " + xls.getCj()); } } /** * 读取xls文件内容 * * @return List<XlsDto>对象 * @throws IOException * 输入/输出(i/o)异常 */ private List<XlsDto> readXls() throws IOException { InputStream is = new FileInputStream( "pldrxkxxmb.xls" ); HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is); XlsDto xlsDto = null ; List<XlsDto> list = new ArrayList<XlsDto>(); // 循环工作表Sheet for ( int numSheet = 0 ; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) { HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet); if (hssfSheet == null ) { continue ; } // 循环行Row for ( int rowNum = 1 ; rowNum <= hssfSheet.getLastRowNum(); rowNum++) { HSSFRow hssfRow = hssfSheet.getRow(rowNum); if (hssfRow == null ) { continue ; } xlsDto = new XlsDto(); // 循环列Cell // 0学号 1姓名 2学院 3课程名 4 成绩 // for (int cellNum = 0; cellNum <=4; cellNum++) { HSSFCell xh = hssfRow.getCell( 0 ); if (xh == null ) { continue ; } xlsDto.setXh(getValue(xh)); HSSFCell xm = hssfRow.getCell( 1 ); if (xm == null ) { continue ; } xlsDto.setXm(getValue(xm)); HSSFCell yxsmc = hssfRow.getCell( 2 ); if (yxsmc == null ) { continue ; } xlsDto.setYxsmc(getValue(yxsmc)); HSSFCell kcm = hssfRow.getCell( 3 ); if (kcm == null ) { continue ; } xlsDto.setKcm(getValue(kcm)); HSSFCell cj = hssfRow.getCell( 4 ); if (cj == null ) { continue ; } xlsDto.setCj(Float.parseFloat(getValue(cj))); list.add(xlsDto); } } return list; } /** * 得到Excel表中的值 * * @param hssfCell * Excel中的每一个格子 * @return Excel中每一个格子中的值 */ @SuppressWarnings ( "static-access" ) private String getValue(HSSFCell hssfCell) { if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) { // 返回布尔类型的值 return String.valueOf(hssfCell.getBooleanCellValue()); } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) { // 返回数值类型的值 return String.valueOf(hssfCell.getNumericCellValue()); } else { // 返回字符串类型的值 return String.valueOf(hssfCell.getStringCellValue()); } } } |
XlsDto2Excel.java类
//该类主要负责向Excel(2003版)中插入数据
import java.io.FileOutputStream; import java.io.OutputStream; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class XlsDto2Excel { /** * * @param xls * XlsDto实体类的一个对象 * @throws Exception * 在导入Excel的过程中抛出异常 */ public static void xlsDto2Excel(List<XlsDto> xls) throws Exception { // 获取总列数 int CountColumnNum = xls.size(); // 创建Excel文档 HSSFWorkbook hwb = new HSSFWorkbook(); XlsDto xlsDto = null ; // sheet 对应一个工作页 HSSFSheet sheet = hwb.createSheet( "pldrxkxxmb" ); HSSFRow firstrow = sheet.createRow( 0 ); // 下标为0的行开始 HSSFCell[] firstcell = new HSSFCell[CountColumnNum]; String[] names = new String[CountColumnNum]; names[ 0 ] = "学号" ; names[ 1 ] = "姓名" ; names[ 2 ] = "学院" ; names[ 3 ] = "课程名" ; names[ 4 ] = "成绩" ; for ( int j = 0 ; j < CountColumnNum; j++) { firstcell[j] = firstrow.createCell(j); firstcell[j].setCellValue( new HSSFRichTextString(names[j])); } for ( int i = 0 ; i < xls.size(); i++) { // 创建一行 HSSFRow row = sheet.createRow(i + 1 ); // 得到要插入的每一条记录 xlsDto = xls.get(i); for ( int colu = 0 ; colu <= 4 ; colu++) { // 在一行内循环 HSSFCell xh = row.createCell( 0 ); xh.setCellValue(xlsDto.getXh()); HSSFCell xm = row.createCell( 1 ); xm.setCellValue(xlsDto.getXm()); HSSFCell yxsmc = row.createCell( 2 ); yxsmc.setCellValue(xlsDto.getYxsmc()); HSSFCell kcm = row.createCell( 3 ); kcm.setCellValue(xlsDto.getKcm()); HSSFCell cj = row.createCell( 4 ); cj.setCellValue(xlsDto.getCj()); (xlsDto.getMessage()); } } // 创建文件输出流,准备输出电子表格 OutputStream out = new FileOutputStream( "POI2Excel/pldrxkxxmb.xls" ); hwb.write(out); out.close(); System.out.println( "数据库导出成功" ); } } |
XlsDto .java类
//该类是一个实体类
public class XlsDto { /** * 选课号 */ private Integer xkh; /** * 学号 */ private String xh; /** * 姓名 */ private String xm; /** * 学院 */ private String yxsmc; /** * 课程号 */ private Integer kch; /** * 课程名 */ private String kcm; /** * 成绩 */ private float cj; public Integer getXkh() { return xkh; } public void setXkh(Integer xkh) { this .xkh = xkh; } public String getXh() { return xh; } public void setXh(String xh) { this .xh = xh; } public String getXm() { return xm; } public void setXm(String xm) { this .xm = xm; } public String getYxsmc() { return yxsmc; } public void setYxsmc(String yxsmc) { this .yxsmc = yxsmc; } public Integer getKch() { return kch; } public void setKch(Integer kch) { this .kch = kch; } public String getKcm() { return kcm; } public void setKcm(String kcm) { this .kcm = kcm; } public float getCj() { return cj; } public void setCj( float cj) { this .cj = cj; } } |
后台输出:
数据库导出成功
1.0 hongten 信息技术学院 计算机网络应用基础 80.0
2.0 王五 信息技术学院 计算机网络应用基础 81.0
3.0 李胜基 信息技术学院 计算机网络应用基础 82.0
4.0 五班古 信息技术学院 计算机网络应用基础 83.0
5.0 蔡诗芸 信息技术学院 计算机网络应用基础 84.0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具