通過使用COM技術
在你每次編寫用HTML表格樣式或Java表格對象顯示數據的應用程序的時候
你只能去找一個符合當前需求的工具了
感謝作為Java和COM橋梁的框架組件
Excel基礎知識
開始之前
下載和安裝過程完成以後
列表
import jp
import jp
public class testSimple
{
public static void main(String[] args) throws Exception {
ReleaseManager rm = new ReleaseManager();
try {
System
ExcelApplication excel = new ExcelApplication(rm);
excel
ExcelWorkbooks xlBooks = excel
ExcelWorkbook xlBook = xlBooks
ExcelWorksheets xlSheets = xlBook
ExcelWorksheet xlSheet = xlSheets
ExcelRange xlRange = xlSheet
xlRange
}
catch(Exception e) { e
finally { rm
}
}
圖
如果曾經使用VB或VBA來自動化Excel
在Excel中工作薄用於保存輸入的數據
有了工作表之後
更有意義的例子
假設你希望把Excel作為數據庫中某些數據的表現層
我將給出一個演示這種操作的簡單示例
· Sales是銷售的細節信息
· People包含銷售人員的姓名和傭金
· Districts包含了銷售地區的名稱和稅率
生成報表的時候
· 毛銷售額等於銷售項乘以銷售價格加上地稅金額
· 純銷售額等於毛銷售額減去銷售人員提取的稅前傭金
這都是一些在Java中可以實現的簡單直接的計算過程
此外
圖
使用JCOM的時候
SELECT sales
FROM
WHERE (sales
接著使用自動化(automation)把每條記錄都寫入Excel電子表格的適當的列中
列表
// 首先建立Excel的引用
ExcelApplication excel = new ExcelApplication(rm);
// 使它可視
excel
// 接著打開我們將使用的模板工作薄
ExcelWorkbooks xlBooks = excel
ExcelWorkbook xlBook = xlBooks
// 接著獲取我們將修改的范圍的引用
ExcelWorksheets xlSheets = xlBook
ExcelWorksheet xlSheet = xlSheets
ExcelRange xlRange = xlSheet
…
// 此處放置數據庫鏈接和查詢建立代碼
…
if (stmt
{
rs = stmt
}
int nColCount = rs
int nRow=
int nCol=
// 在記錄集中循環
while(rs
{
// 記錄集中的每行都是電子表格中的一行
nRow++;
for(int i=
{
// 匹配DB列和電子表格列
nCol = getExcelColumn(i);
// 查找於行和列對應的單元格,並把它設置為適當的記錄集字段
xlRange.Item(nRow,nCol).Value(rs.getObject(i).toString());
}
// 填入公式
xlRange.Item(nRow,7).Value("=RC[-2]*RC[-1]");
xlRange.Item(nRow,9).Value("=RC[-2]*RC[-1]/100");
xlRange.Item(nRow,10).Value("=RC[-3]+RC[-1]");
xlRange.Item(nRow,11).Value("=RC[-4]*((100-RC[2])/100)");
}
在列表2的第一部分中,其目標是獲取希望修改的單元格的控制權。tw.wiNgwiT.CoM這會花費了一定的開銷。
· 首先你必須獲取表現Excel本身的對象,有了JCOM輔助類的幫助以後,這一步操作相當直接。
ExcelApplication excel = new ExcelApplication(rm);
· 下一步,你希望獲取對工作薄集合的訪問權。你希望打開自己的模板工作薄(本示例中這個模板在C:\sales.xls中),在工作薄集合中打開它。
ExcelWorkbooks xlBooks = excel.Workbooks();
· 下一步,你希望打開自己的工作薄並獲取該工作薄集合的引用。
ExcelWorkbook xlBook = xlBooks.Open("c:\\sales.xls");
ExcelWorksheets xlSheets = xlBook.Worksheets();
· 最後,你希望獲取集合中的第一個工作表,並把工作范圍定義為整個工作表。
ExcelWorksheet xlSheet = xlSheets.Item(1);
ExcelRange xlRange = xlSheet.Cells();
完成這些工作以後,你的xlRange對象將允許你在單元中放入值和公式了。通過在前面的記錄集(從提交給數據庫的SQL命令中返回的)中循環,使用xlRange.Item(nRow,nCol).Value("whatever")語法,逐行逐列地把記錄集中的值插入到電子表格中(語法中的whatever來自於記錄集)。通過使用rs.getObject(i).toString可以得到當前行中I列的值
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25388.html