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

  • 相关阅读:
    Office安装错误1402的解决
    Python中参数多个值的表示法
    分割工具——按字段属性
    ArcEngine开发各种几何错误代码
    oracle创建用户、授予权限及删除用户
    Oracle存储过程基本语法介绍
    20个非常有用的Java程序片段
    灵活运用 SQL SERVER FOR XML PATH
    01.SQLServer性能优化之----强大的文件组----分盘存储
    SQL Server XML变量转为Json文本
  • 原文地址:https://www.cnblogs.com/sengzhao666/p/11146462.html
Copyright © 2011-2022 走看看