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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM