java 返回前台excel_Java后台读取excel表格返回至Web前端
如果是做连接数据库的话,系统难度就降低了不少;
这次本人也算是体会到数据库的方便了吧(不过以后云储存好像会更受欢迎些);
比如说查询列出所有数据吧:
数据库每个表每一列都有列名,正常的做法是遍历数据库表,dao层利用list储存实体对象集,
数据库表中每一行记录一个实体的各个属性:
public Listlist() {
String sql= "select * from account";
List 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);
}returnlist;
}
连接excel表,同理:因为没有列名,所以直接定义一个即可;(前提假设本人直到表的构造)
importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStream;importjava.util.ArrayList;importjava.util.List;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.ss.usermodel.Cell;importorg.apache.poi.ss.usermodel.Row;importorg.apache.poi.ss.usermodel.Sheet;importorg.apache.poi.ss.usermodel.Workbook;importentity.Bus;public classExcelTest {public static void main(String[] args) throwsIOException{/*** 读取表格
* 输出至前端*/Bus bus=null;
List list = new ArrayList<>();
String filePath="D://dns.xls";
InputStream input= newFileInputStream(filePath);
Workbook wb= null;
wb= newHSSFWorkbook(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);//数值型
id=(int) cell1.getNumericCellValue();//字符串型
name=cell2.getStringCellValue();
bus=newBus(id,name);
list.add(bus);
System.out.print(id);
System.out.println(name);
}
}
}
运行截图:(这里将读取表格的函数放入dao层,稍加改动)
记录一下过程小错:
提示空指针异常,也就是出现了为空的地方,可以理解为参数未传递成功问题,看提示:
意思像是它读不懂以下包:
声明:我之前已经给项目配置了路径;
但是,任需要将jar包存入lib下如图: