zoukankan      html  css  js  c++  java
  • 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下如图:

  • 相关阅读:
    octotree神器 For Github and GitLab 火狐插件
    实用篇如何使用github(本地、远程)满足基本需求
    PPA(Personal Package Archives)简介、兴起、使用
    Sourse Insight使用过程中的常使用功能简介
    Sourse Insight使用教程及常见的问题解决办法
    github 遇到Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts问题解决
    二叉查找树的C语言实现(一)
    初识内核链表
    container_of 和 offsetof 宏详解
    用双向链表实现一个栈
  • 原文地址:https://www.cnblogs.com/sengzhao666/p/11146462.html
Copyright © 2011-2022 走看看