99久久精品国产片-99久久精品国产免费-99久久精品国产麻豆-99久久精品国产国产毛片-99久久精品国产高清一区二区-99久久精品费精品国产一区二区

400-609-4309

Java中怎么創建表格-創建方式-創建操作

Java中怎么創建表格

Java中怎么創建表格-創建方式-創建操作

摘要

在Java開發中,“創建表格”是個高頻需求,但很多人一聽到“表格”就懵——到底是控制臺打印個數據表格?還是做個桌面應用的可視化表格?或者是導出Excel表格?其實不同場景的實現方式完全不同。這篇文章會從實際開發痛點出發,帶你搞懂Java中“表格”的真實含義,手把手教你4種最常用的表格創建方式(控制臺、桌面應用、Web頁面、Excel文件),每個方法都附詳細步驟和可直接運行的代碼示例,看完就能上手解決你的表格需求。

一、先搞清楚:Java里的“表格”到底是啥?

很多新手剛接觸Java時,一提“創建表格”就覺得是個高大上的功能,其實“表格”在Java里不是一個固定概念,而是根據使用場景分了好幾種:

控制臺表格:就是在黑窗口里用字符拼出“格子”,比如打印日志數據、命令行工具展示統計結果,核心是“把數據按行列對齊”。

桌面應用表格:用Swing、JavaFX等GUI庫做的可視化表格,像本地數據管理工具里能點擊、排序、編輯的表格,核心是“用戶交互”。

Web應用表格:網頁上的表格,比如管理系統里的用戶列表、訂單列表,通常是Java后端傳數據,前端(HTML/CSS/JS)渲染,核心是“前后端數據對接”。

文件表格:最典型的就是Excel表格,比如導出報表、數據備份,需要用POI、EasyExcel等庫操作Excel文件,核心是“數據持久化到文件”。

不同場景的表格,實現邏輯天差地別。比如你想在控制臺打印個數據匯總,結果跑去學Excel操作庫,那就跑偏了。所以第一步,先明確你的表格要“用在哪”。

二、4種常用表格創建方式,從入門到實戰

(一)控制臺表格:最簡單的“字符拼接法”,3分鐘搞定數據對齊

痛點:“我用System.out.println打印數據,結果列對不齊,像亂碼一樣,領導看了直皺眉!”

控制臺表格本質是用字符串拼接出“邊框+內容”,核心是解決“不同長度的字符串如何對齊”。話不多說,直接上步驟:

步驟1:確定表頭和數據結構

比如要打印“學生成績表”,表頭是“學號、姓名、分數”,數據是一個二維數組:

java

String[] headers = {"學號", "姓名", "分數"};

String[][] data = {

{"2023001", "張三", "95"},

{"2023002", "李四", "88"},

{"2023003", "王五", "76"} // 注意:王五名字短,分數也短,對齊容易出問題

};

步驟2:計算每列的寬度(關鍵!)

列寬不夠會導致內容換行,太寬又浪費空間。最簡單的方法是:每列寬度 = 表頭長度和該列數據最大長度中的較大值 + 2(左右留空格)

比如“學號”列,表頭是4個字,數據最長的“2023003”是6個字符,所以列寬=6+2=8。

步驟3:拼接邊框和內容

用StringBuilder拼接,先畫“上邊框”,再循環打印“表頭行”和“數據行”,最后畫“下邊框”。直接看代碼:

public class ConsoleTable {

public static void main(String[] args) {

String[] headers = {"學號", "姓名", "分數"};

String[][] data = {{"2023001", "張三", "95"}, {"2023002", "李四", "88"}, {"2023003", "王五", "76"}};

    // 計算每列寬度(表頭和數據的最大長度+2)

int[] columnWidths = new int[headers.length];

for (int i = 0; i < headers.length; i++) {

columnWidths[i] = headers[i].length(); // 先初始化為表頭長度

for (String[] row : data) {

if (row[i].length() > columnWidths[i]) {

columnWidths[i] = row[i].length(); // 取數據中最長的長度

}

}

columnWidths[i] += 2; // 左右各留1個空格

}

// 畫表格

StringBuilder sb = new StringBuilder();

// 上邊框:比如 ""

for (int i = 0; i < headers.length; i++) {

sb.append("").append(String.join("", Collections.nCopies(columnWidths[i], "")));

}

sb.append("n");

// 表頭行:比如 " 學號 姓名 分數 "

for (int i = 0; i < headers.length; i++) {

sb.append("").append(String.format("%-" + columnWidths[i] + "s", " " + headers[i] + " "));

}

sb.append("n");

// 分隔線:比如 ""

for (int i = 0; i < headers.length; i++) {

sb.append("").append(String.join("", Collections.nCopies(columnWidths[i], "")));

}

sb.append("n");

// 數據行:循環拼接每一行數據

for (String[] row : data) {

for (int i = 0; i < row.length; i++) {

sb.append("").append(String.format("%-" + columnWidths[i] + "s", " " + row[i] + " "));

}

sb.append("n");

}

// 下邊框:比如 ""

for (int i = 0; i < headers.length; i++) {

sb.append("").append(String.join("", Collections.nCopies(columnWidths[i], "")));

}

sb.append("n");

// 打印結果

System.out.println(sb.toString());

}

}

運行效果:

學號 姓名 分數

2023001 張三 95

2023002 李四 88

2023003 王五 76

注意:中文和英文的寬度可能不對齊(比如“張三”占2個字符,“Tom”占3個字符),如果需要更精準,可以用String.format的%n$s格式,或者直接用現成的工具類(比如org.apache.commons.text.StringEscapeUtils),不過新手先用上面的方法足夠了。

(二)桌面應用表格:用Swing的JTable,10行代碼實現可視化表格

痛點:“我想做個本地小工具,把數據庫數據展示成表格,用戶能點擊列頭排序,怎么搞?”

Swing是Java自帶的GUI庫,其中JTable組件專門用于創建表格,無需額外導包,適合快速開發桌面小工具。

步驟1:創建窗口(JFrame)

表格需要放在窗口里顯示,先初始化一個JFrame:

java

JFrame frame = new JFrame("學生成績表");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 關閉窗口時退出程序

frame.setSize(600, 400); // 窗口大小

步驟2:定義表格數據和表頭

和控制臺表格類似,需要“表頭數組”和“二維數據數組”:

java

String[] columnNames = {"學號", "姓名", "分數"};

Object[][] rowData = {

{"2023001", "張三", 95},

{"2023002", "李四", 88},

{"2023003", "王五", 76},

{"2023004", "趙六", 90}

};

步驟3:創建JTable并添加到窗口

直接用JTable構造方法傳入數據和表頭,然后放到JScrollPane(滾動面板)里(重點:不加滾動面板,表格內容太多會顯示不全):

java

JTable table = new JTable(rowData, columnNames);

JScrollPane scrollPane = new JScrollPane(table); // 把表格放進滾動面板

frame.add(scrollPane); // 窗口添加滾動面板

frame.setVisible(true); // 顯示窗口

完整代碼:

import javax.swing.;

import java.awt.;

public class SwingTable {

public static void main(String[] args) {

// 1. 創建窗口

JFrame frame = new JFrame("學生成績表");

frame.setDefaultCloseOperation(JFrame.EXITONCLOSE);

frame.setSize(600, 400);

frame.setLocationRelativeTo(null); // 窗口居中顯示

    // 2. 表格數據和表頭

String[] columnNames = {"學號", "姓名", "分數"};

Object[][] rowData = {

{"2023001", "張三", 95},

{"2023002", "李四", 88},

{"2023003", "王五", 76},

{"2023004", "趙六", 90},

{"2023005", "錢七", 82}, // 多幾行數據,測試滾動條

{"2023006", "孫八", 79}

};

// 3. 創建表格并添加滾動面板

JTable table = new JTable(rowData, columnNames);

table.setRowHeight(30); // 設置行高,默認太擠

JScrollPane scrollPane = new JScrollPane(table);

frame.add(scrollPane);

// 4. 顯示窗口

frame.setVisible(true);

}

}

運行效果:

會彈出一個窗口,里面是帶滾動條的表格,點擊表頭可以自動排序(比如點擊“分數”列,會按分數升序/降序排列)。

小技巧:如果想讓表格支持編輯(雙擊單元格修改數據),默認JTable就支持;如果想禁用編輯,加一句table.setEnabled(false);。

(三)Web應用表格:后端傳數據,前端渲染,兩種方案任你選

痛點:“我用Spring Boot開發管理系統,怎么在網頁上展示用戶列表表格?后端要做什么?”

Web表格的核心是“后端提供數據,前端負責展示”,分兩種場景:

方案1:后端直接生成HTML表格(適合簡單頁面)

如果頁面不復雜,后端可以用StringBuilder拼接HTML標簽,直接返回給前端。比如用Spring Boot的Controller:

@GetMapping("/student-table")

@ResponseBody

public String getStudentTable() {

// 1. 準備數據(實際開發中從數據庫查)

List students = Arrays.asList(

new Student("2023001", "張三", 95),

new Student("2023002", "李四", 88),

new Student("2023003", "王五", 76)

);

// 2. 拼接HTML表格

StringBuilder html = new StringBuilder();

html.append("

");

// 表頭

html.append("");

// 數據行

for (Student s : students) {

html.append(""); html.append(""); html.append(""); html.append(""); html.append("");

}

html.append("
學號姓名分數
").append(s.getId()).append("").append(s.getName()).append("").append(s.getScore()).append("
");

return html.toString();

}

// 學生實體類

class Student {

private String id;

private String name;

private int score;

// 構造方法、getter省略

}

前端訪問/student-table,就能看到一個簡單的HTML表格。但這種方式不適合復雜頁面(比如分頁、搜索、排序),現在主流是前后端分離。

方案2:前后端分離(主流):后端返回JSON,前端用框架渲染

后端(Spring Boot)提供接口返回JSON數據:

java

@GetMapping("/students")

@ResponseBody

public List getStudents() {

// 實際開發中從數據庫查詢,這里模擬數據

return Arrays.asList(

new Student("2023001", "張三", 95),

new Student("2023002", "李四", 88),

new Student("2023003", "王五", 76)

);

}

前端(以Vue+Element UI為例)用el-table組件渲染:

這種方式靈活度高,分頁、排序、篩選都能通過前端組件輕松實現,是現在企業開發的主流。

(四)Excel表格:用EasyExcel導出報表,防內存溢出

痛點:“用POI導出Excel,數據量大一點就OOM(內存溢出),有沒有更簡單的方法?”

Java操作Excel的庫很多,傳統的Apache POI功能全但容易內存溢出,現在更推薦阿里的EasyExcel(輕量、防OOM、API簡單)。

步驟1:引入EasyExcel依賴(Maven)

xml

com.alibaba

easyexcel

3.3.0

步驟2:創建實體類(用注解定義表頭)

@Data // Lombok注解,簡化getter/setter

public class StudentExcel {

@ExcelProperty("學號") // Excel表頭名稱

private String id;

@ExcelProperty("姓名")

private String name;

@ExcelProperty("分數")

private Integer score;

}

步驟3:寫入Excel文件

import com.alibaba.excel.EasyExcel;

import java.util.Arrays;

import java.util.List;

public class ExcelTable {

public static void main(String[] args) {

// 1. 準備數據(實際開發中從數據庫查)

List data = Arrays.asList(

new StudentExcel("2023001", "張三", 95),

new StudentExcel("2023002", "李四", 88),

new StudentExcel("2023003", "王五", 76)

);

    // 2. 導出Excel(文件路徑自己改,比如"D:/學生成績表.xlsx")

String fileName = "D:/學生成績表.xlsx";

EasyExcel.write(fileName, StudentExcel.class)

.sheet("成績數據") // 工作表名稱

.doWrite(data); // 寫入數據

System.out.println("Excel導出成功!");

}

}

運行效果:

在D盤會生成“學生成績表.xlsx”,打開后就是標準的Excel表格,表頭是“學號、姓名、分數”,數據正確填充。

為什么用EasyExcel?

POI是把整個Excel加載到內存,數據量大(比如10萬行)就會OOM;EasyExcel是“讀一行寫一行”,內存占用極低,實測導出100萬行數據也不會崩。

三、避坑指南:這些“坑”我踩過,你別再踩了

控制臺表格中文對齊:如果用String.format("%-ns")對齊時中文錯位,試試把中文按“2個字符”計算寬度(比如“張三”算2個字符,“abc”算3個字符)。

Swing表格不顯示:一定記得把JTable放進JScrollPane,否則表格會被窗口“擠沒了”。

Excel導出OOM:數據量超過1萬行,果斷放棄POI,用EasyExcel或Alibaba的EasyExcel,別跟內存較勁。

Web表格數據量大卡頓:前端用分頁(比如一次查20行),后端用LIMIT分頁查詢,別一次性返回所有數據。

總結

Java創建表格,核心是“看場景選方法”:控制臺用字符拼接,桌面應用用Swing的JTable,Web用前后端分離(JSON+前端組件),Excel用EasyExcel。每個方法都不難,關鍵是多動手寫代碼——把上面的示例跑一遍,改改數據,試試加新功能(比如給Excel加單元格樣式),很快就能熟練掌握。

最后說句大實話:剛開始寫表格代碼時,我也經常搞錯列寬、漏加滾動面板,多踩幾次坑就會了。編程這事兒,沒什么捷徑,動手就是最好的學習。

12 12 分享:

相關課程

發表評論

登錄后才能評論,請登錄后發表評論...
提交評論

最新課程

最新專題

国产国产人免费视频成69堂| 成人免费网站视频ww| 国产一区二区精品尤物| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产视频一区二区在线播放| 中文字幕97| 99色视频| 国产一区二区精品| 亚洲不卡一区二区三区在线| 成人高清免费| 中文字幕一区二区三区 精品| 日韩av成人| 麻豆系列 在线视频| 亚欧乱色一区二区三区| 亚洲 男人 天堂| 黄视频网站免费观看| 一 级 黄 中国色 片| 中文字幕一区二区三区 精品| 久久久久久久免费视频| 国产a视频精品免费观看| 国产视频久久久| 精品久久久久久免费影院| 国产福利免费观看| 久久久久久久免费视频| 成人影院一区二区三区| 日本特黄一级| 欧美日本免费| 欧美激情在线精品video| 国产亚洲免费观看| 精品视频在线观看免费| 国产伦精品一区二区三区无广告 | 韩国三级一区| 麻豆系列 在线视频| 二级片在线观看| 久久久久久久免费视频| 天天做人人爱夜夜爽2020毛片| 久久福利影视| 韩国毛片| 四虎久久精品国产| 一级毛片视频播放| 日韩中文字幕一区| 国产麻豆精品hdvideoss| 精品毛片视频| 台湾毛片| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 成人在激情在线视频| 欧美激情一区二区三区视频高清 | 日韩专区亚洲综合久久| 国产精品自拍亚洲| 精品久久久久久综合网| 精品国产一级毛片| 国产美女在线一区二区三区| 欧美激情一区二区三区视频高清| 九九干| 国产国语在线播放视频| 国产一区精品| 国产一区二区福利久久| 日韩在线观看免费| 精品视频在线观看免费| 日日夜夜婷婷| 成人免费观看男女羞羞视频| 欧美大片aaaa一级毛片| 日韩在线观看视频黄| 国产一区二区福利久久| 精品视频在线观看免费| 成人免费网站视频ww| 亚洲女初尝黑人巨高清在线观看| 超级乱淫伦动漫| 亚洲第一色在线| 日本在线播放一区| 欧美另类videosbestsex久久| 午夜久久网| 久久国产一区二区| 一级女人毛片人一女人| 国产亚洲免费观看| 一 级 黄 中国色 片| 精品毛片视频| 成人免费观看视频| 亚洲精品影院| 欧美一区二区三区性| 久久精品欧美一区二区| 天天做日日爱| 999久久久免费精品国产牛牛| 久久国产精品自线拍免费| 免费一级片在线| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日韩一级黄色大片| 国产一区二区高清视频| 午夜精品国产自在现线拍| 91麻豆精品国产综合久久久| 韩国三级一区| 国产亚洲免费观看| 国产一区二区福利久久| 精品视频免费观看| 精品视频一区二区三区| 欧美a级大片| 日韩在线观看网站| 精品国产一区二区三区精东影业| 高清一级做a爱过程不卡视频| 青青久久网| 免费一级片在线| 日韩中文字幕在线播放| 香蕉视频久久| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 精品视频在线看| 国产一区精品| 欧美激情伊人| 九九久久国产精品| 尤物视频网站在线| 青青久久网| 中文字幕一区二区三区 精品| 成人高清视频免费观看| 国产一区二区福利久久| 午夜欧美成人久久久久久| 欧美一级视| 国产a视频精品免费观看| 欧美另类videosbestsex久久| 成人高清视频在线观看| 亚洲精品永久一区| 午夜家庭影院| 亚洲不卡一区二区三区在线| 沈樵在线观看福利| 欧美激情伊人| 韩国毛片| 欧美电影免费看大全| 欧美日本国产| 午夜在线亚洲| 日本在线不卡视频| 国产成人欧美一区二区三区的| 99热视热频这里只有精品| 九九久久国产精品大片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美日本免费| 国产a视频精品免费观看| 精品国产一区二区三区久| 黄色免费三级| 国产一区二区精品尤物| 色综合久久天天综合| 青青久久国产成人免费网站| 国产一区二区精品在线观看| 青青久热| 欧美国产日韩一区二区三区| 青青久久网| 日本在线www| 亚欧成人乱码一区二区| 国产成人精品影视| 欧美电影免费| 久久国产一区二区| 久久99爰这里有精品国产| 国产伦精品一区三区视频| 国产精品自拍在线| 一级毛片视频免费| 日本免费乱人伦在线观看| 欧美国产日韩在线| 成人免费观看视频| 亚洲女初尝黑人巨高清在线观看| 国产伦精品一区三区视频| 欧美一级视频高清片| 国产韩国精品一区二区三区| 99久久精品国产免费| 九九九网站| 日韩免费片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久国产精品自线拍免费| 黄视频网站在线看| 国产a视频| 成人影视在线观看| 午夜欧美成人久久久久久| 美女被草网站| 四虎影视库| 欧美大片a一级毛片视频| 日本免费区| 国产伦理精品| 国产精品自拍在线观看| 天堂网中文在线| 日韩av成人| 青青青草视频在线观看| 久久国产精品自由自在| 日韩免费在线| 麻豆网站在线看| 青青久热| 欧美一区二区三区在线观看| 精品国产香蕉在线播出| 黄视频网站在线看| 成人免费观看网欧美片| 国产精品1024永久免费视频| 精品久久久久久综合网| 国产视频一区二区在线观看| 国产成人女人在线视频观看| 亚洲精品影院一区二区| 可以免费看污视频的网站| 国产精品自拍在线| 91麻豆精品国产高清在线| 亚洲第一视频在线播放| 四虎久久影院| 99久久视频| 九九精品影院| 精品在线观看国产| 中文字幕一区二区三区精彩视频| 欧美另类videosbestsex视频|