[精讚] [會員登入]
202

xlsx 資料不固定欄位如何讀取並儲存

xlsx 資料不固定欄位如何讀取並儲存 類型1 序號,競賽項目,學校,參賽者,指導教師,帳號,密碼 類型2 (多了隊員)

分享此文連結 //n.sfs.tw/16505

分享連結 xlsx 資料不固定欄位如何讀取並儲存@igogo
(文章歡迎轉載,務必尊重版權註明連結來源)
2025-04-16 10:46:41 最後編修
2025-03-28 13:52:18 By igogo
 

xlsx 資料不固定欄位如何讀取

 

類型1 
序號,競賽項目,學校,參賽者,指導教師,帳號,密碼

簡報項目 (多了隊員)

序號,競賽項目,學校, 參賽者,隊員,指導教師,帳號,密碼

繪圖項目(多了繪圖軟體)

序號,競賽項目,學校,參賽者,指導教師,繪圖軟體,帳號,密碼

 

 

 

定義欄位:

競賽項目 contestitem

學校 schoolname

指導教師 instructor

參賽者 username

帳號 account

密碼 passwd

隊員 membername 

 

建立Model Team

public class Team {


    private String contestitem;
    private String schoolname;
    private String username;

    private String membername;
    private String instructor;

    private String account;
    private String passwd;

    private String location;

    private String description;
    private String comments;
}

 

 

 

做法

先讀第一列, 利用map 記錄每個欄位標題名稱

Map<String,Integer> header = new HashMap<>();

 

Map<String, Integer> header = new HashMap<>();

header.put("contestitem", 99);
header.put("username", 99);
header.put("instructor", 99);
header.put("schoolname", 99);
header.put("account", 99);
header.put("passwd",99);
header.put("membername",99);

 

每個欄位初始值為99, 如果讀進來的檔案有此欄位, 再設定為欄位值

while (cellIterator.hasNext()) {

    Cell cell = cellIterator.next();


    if (formatter.formatCellValue(cell).contains("競賽項目")) {
        header.replace("contestitem", cell.getColumnIndex());
    }
    if (formatter.formatCellValue(cell).contains("參賽者")) {
        header.replace("username", cell.getColumnIndex());
    }
    if (formatter.formatCellValue(cell).contains("指導教師")) {
        header.replace("instructor", cell.getColumnIndex());
    }
    if (formatter.formatCellValue(cell).contains("學校")) {
        header.replace("schoolname", cell.getColumnIndex());
    }
    if (formatter.formatCellValue(cell).contains("帳號")) {
        header.replace("account", cell.getColumnIndex());
    }
    if (formatter.formatCellValue(cell).contains("密碼")) {
        header.replace("passwd", cell.getColumnIndex());
    }

    if (formatter.formatCellValue(cell).contains("隊員")) {
        header.replace("membername", cell.getColumnIndex());
    }

}

 

取得index值後, 讀列

//取得每一列的每一欄index中的資料
while (rowIterator.hasNext()) {

    row = rowIterator.next();
    Team team = new Team();

    team.setContestitem(row.getCell(header.get("contestitem")).getStringCellValue());
    team.setSchoolname(row.getCell(header.get("schoolname")).getStringCellValue());
    team.setUsername(row.getCell(header.get("username")).getStringCellValue());
    team.setAccount(row.getCell(header.get("account")).getStringCellValue());
    team.setPasswd(row.getCell(header.get("passwd")).getStringCellValue());
    team.setInstructor(row.getCell(header.get("instructor")).getStringCellValue());
    team.setMembers(1);
    if (header.get("membername")<99) {

        team.setMembername(row.getCell(header.get("membername")).getStringCellValue());
        team.setMembers(2);

    }
    ObjectMapper mapper = new ObjectMapper();
    logger.info(mapper.writeValueAsString(team));

    teamList.add(team);
}

 

 

簡報項目雖然是兩人一組,  但可一人參賽, 隊員欄位可能沒有值

if (header.get("membername")<99) {

    team.setMembername(row.getCell(header.get("membername")).getStringCellValue());
    team.setMembers(2);

}

 


 

 

 

 

 

 

END

你可能感興趣的文章

[scratch2] 巢狀迴圈 有兩清單 一數字 一英文 想排出所以可能, 例如1a,1b,1c,2a,2b,2c...3c 利用巢狀迴圈 內圈累加的變

台中市校園空氣品質預警 aqi

[scratch] 將角色物件放到清單中,並依序讀出每個角色的X值 將角色物件放到清單中,並依序讀出每個角色的X值

scratch 不重覆隨機取陣列值 隨機取數是在設計遊戲時, 很常用到的技巧 最簡單的就是使用運算積木裡的隨機取數範圍 但是, 如果我是想全部取出且不重覆,

[scratch2] 分數排名 在清單中隨机產生5名學生的考試分數, 再利用另一個清單排名 想法, 分數愈高者排名愈好, 例如名次是第5名, 那分數是最

xlsx 資料不固定欄位如何讀取並儲存 xlsx 資料不固定欄位如何讀取並儲存 類型1 序號,競賽項目,學校,參賽者,指導教師,帳號,密碼 類型2 (多了隊員)

<<此文不開放留言>>

隨機好文

臺中市雲端校務系統與Windows AD帳號整合(6) 修改Windows AD 密碼原則

臺中市雲端校務系統與Windows AD帳號整合(8) 三 開機啟動服務 3-1 Windows Server上隨系統開機啟動服務 寫一個bat檔 cd C:UsersAdmi

ubuntu ufw ufw 簡易筆記 原則禁止,例外開放 ufw default deny 啟動ufw sudo ufw enable 關掉

網站無障礙規範 https://accessibility.ncc.gov.tw/News/Detail/3238?Category=4

台中市校園空氣品質預警 aqi