Java后台读取excel表格返回至Web前端
如果是做连接数据库的话,系统难度就降低了不少;
这次本人也算是体会到数据库的方便了吧(不过以后云储存好像会更受欢迎些);
比如说查询列出所有数据吧:
数据库每个表每一列都有列名,正常的做法是遍历数据库表,dao层利用list储存实体对象集,
数据库表中每一行记录一个实体的各个属性:
public List<Account> list() { String sql = "select * from account"; List<Account> list = new ArrayList<>(); Connection conn = Shujuku.conn(); Statement state = null; ResultSet rs = null; try { state = conn.createStatement(); rs = state.executeQuery(sql); Account bean = null; while (rs.next()) { String a = rs.getString("name");//name为数据库列名 String b = rs.getString("amount"); String c = rs.getString("money"); String d = rs.getString("time"); bean = new Account(a,b,c,d);//每一行创建一个实体 list.add(bean); } } catch (SQLException e) { e.printStackTrace(); } finally { Shujuku.close(rs, state, conn); } return list; }
连接excel表,同理:因为没有列名,所以直接定义一个即可;(前提假设本人直到表的构造)
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.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 entity.Bus; public class ExcelTest { public static void main(String[] args) throws IOException{ /** * 读取表格 * 输出至前端 */ Bus bus=null; List<Bus> list = new ArrayList<>(); String filePath="D://dns.xls"; InputStream input = new FileInputStream(filePath); Workbook wb = null; wb = new HSSFWorkbook(input); //得到一个工作表对象; Sheet sheet = wb.getSheetAt(0); int rsRows = sheet.getLastRowNum();// 获取sheet表中的总行数 // 遍历行 //每一行成一个bus对象 for (int i=0;i<=rsRows;i++) { Row row = sheet.getRow(i); int id=0; String name=null; //遍历行单元格,已知有两列;第一列int型id,第二列String型name Cell cell1 = row.getCell(0); Cell cell2 = row.getCell(1);
//一定要检验是否为空 if(cell1==null||cell1.equals(null)||cell1.getCellType()==CellType.BLANK){
break;
}else {
//数值型
id=(int) cell1.getNumericCellValue();
}
if(cell2==null||cell2.equals(null)||cell2.getCellType()==CellType.BLANK){
break;
}else {
//字符串型
name= cell2.getStringCellValue();
} bus=new Bus(id,name); list.add(bus); System.out.print(id); System.out.println(name); }
wb.close();//记得关闭 } }
运行截图:(这里将读取表格的函数放入dao层,稍加改动)
记录一下过程小错:
提示空指针异常,也就是出现了为空的地方,可以理解为参数未传递成功问题,看提示:
意思像是它读不懂以下包:
声明:我之前已经给项目配置了路径;
但是,任需要将jar包存入lib下如图: