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下如图:

 

 

posted @ 2019-07-07 16:05  田智凯  阅读(6033)  评论(0编辑  收藏  举报