最近有需求弄到這方面的東西
因此就順便來做個紀錄吧~
API下載
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/
首先先來寫如何建立一個excel檔
1. 建立Workbook
也就是整份的Excel檔案,可指定檔名。
WritableWorkbook workbook = Workbook.createWorkbook(new File("test.xls"));
2. 建立Sheet
也就是每個Excel檔案下面可以跳tag的sheet表。
WritableSheet sheet = workbook.createSheet("My Sheet", 0);
第一個參數是sheet name,第二個參數是第幾張sheet,從0開始。
3. 設定Cell格式(可省略,就會是預設的格式)
Cell就是我們在Excel中看到的一格一格的那個就叫做Cell
字型部分我們必須先另外設定,如下
WritableFont myFont = new WritableFont(WritableFont.createFont("標楷體"), 14);
myFont.setColour(Colour.WHITE);再設定Cell的格式,如下
WritableCellFormat cellFormat = new WritableCellFormat ();
cellFormat.setFont(myFont); // 指定字型
cellFormat.setBackground(Colour.LIGHT_BLUE); // 背景顏色
cellFormat.setAlignment(Alignment.CENTRE); // 對齊方式
4. 增加一個文字儲存格Cell
Label label = new Label(0, 1, "新增", cellFormat);
sheet.addCell(label);
第一個和第二個參數為儲存格位址,(0,1)表示第一行(直) 第二列(橫)的位置,都是從0開始計算。
第三個參數就是儲存格的內容
第四個參數就是儲存格的格式,這邊我給它我們上面所設定的格式,如果不想設定可不填
5. 寫入及結束文件
workbook.write();
workbook.close();最後要把我們剛剛所做的事情都寫入再關閉就完成了。
以下是完整程式碼
import java.io.IOException;import java.io.File;import jxl.Workbook;import jxl.format.Alignment;import jxl.format.Colour;import jxl.write.Label;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;public class test {public static void main(String[] arge) {try {WritableWorkbook workbook = Workbook.createWorkbook(new File("test.xls"));WritableSheet sheet = workbook.createSheet("My Sheet", 0);WritableFont myFont = new WritableFont(WritableFont.createFont("標楷體"), 14);myFont.setColour(Colour.WHITE);WritableCellFormat cellFormat = new WritableCellFormat();cellFormat.setFont(myFont); // 指定字型cellFormat.setBackground(Colour.LIGHT_BLUE); // 背景顏色cellFormat.setAlignment(Alignment.CENTRE); // 對齊方式Label label = new Label(0, 1, "新增測試", cellFormat);sheet.addCell(label);workbook.write();workbook.close();} catch (IOException e) {e.printStackTrace();} catch (WriteException e) {e.printStackTrace();}}}
成品:
有空再來寫一篇讀取的範例
程式碼有一部份被截到了
就請麻煩複製全部在自己貼去看摟~

不好意思 我想請問一下 用這些程式碼 可以一次寫兩個欄位嗎?? 因為我自己寫了一些程式 怎麼寫都只能寫一個欄位 要寫其他欄位會被覆蓋@@
Label label = new Label(0, 1, "新增測試", cellFormat); sheet.addCell(label); label = new Label(0, 2, "測試2", cellFormat); sheet.addCell(label); 這樣寫可以嗎? 這文章有點久...我也不是記得很清楚了 不行的話再跟我說~
可以了 謝謝@@
請問一下,如果我要修改原來有資料的表單,我應該要怎弄會比較好, 假設: 建立表單Sheet1,在第一行存入資料,然後關閉Excel, 想再次開啟相同表單(Sheet1),在第二行輸入資料。 我用.getWorkbook開啟,裡面語法都只能讀取。 我用 .createWorkbook 再用.createSheet(),會把舊資料砍掉。 謝謝!!!
抱歉,我已解決了,還是謝謝你
沒幫到什麼~ 不過我記得是可以取得現有的sheet的吧
您好: 想請問有沒有此方法的加密方式可以使用呢? 謝謝
*****
你好,這個api 網頁掛掉了,有沒有其他的api呢?謝謝你
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/ 不過這套很久沒更新了 要不要研究另一套poi