// 是否僅導出有數據的區域,該方法對所有的導出生效(默認為false)
table.getIOManager().setExpandedOnly(true);
輸入KDF
如果你已經有了一個完整的KDF文件,我們推薦使用com.kingdee.bos.ctrl.kdf.file.KDF類來讀取和管理其中的對象,包括KDTable。要讀取其中的KDTable對象,可以使用如下所示的代碼(假設你的.kdf文件存放目錄為"yoururl\test.kdf"):
KDF kdf = new KDF("yoururl\\test.kdf");
KDTable table = kdf.getTableByIndex(0);
//如果要加載已保存在kdf中的打印設置;
table. getPrintManager().setFromKDF(kdf);
或者是
KDF kdf = new KDF("yoururl\\test.kdf");
KDTable table = kdf.getTableByID("table1");
//如果要加載已保存在kdf中的打印設置;
table. getPrintManager().setFromKDF(kdf);
當然你也可以直接使用KDTIOManager類讀取KDF文件,但是由於KDTIOManager不具備KDF文件管理功能,所以它只能讀取文件中描述的第一個KDTable對象。
KDTable table = new KDTable();
table.load("yoururl\\test.kdf");
如果要保存打印設置到kdf:
KDTable table = new KDTable();
KDF kdf = new KDF();
table.getPrintManager().saveToKDF(kdf);
kdf.saveToFile("yoururl\\test.kdf");
對於專用於描述KDTable對象的KDF文件來說,這種方法是相當快捷方便的。
輸出KDF
KDTable對象可以直接被序列化並且保存為KDF文件 table.getIOManager().save("yourfile.kdf");
輸出KDS
KDS結構是一種中間數據結構,通過KDS作為橋梁,可以在KDTable和Excel、PDF等等多種數據格式之間進行交換。
一個KDTable對應於一個KDS Sheet,而一個KDS Book包含多個KDS Sheet。KDTable和KDS之間轉換的接口都是在KDTIOManager提供的,通過如下接口可以將一個KDTable轉換為KDS Sheet:
/**
* 將當前表轉換成一個KDS Sheet
* @param book Sheet所屬的KDS Book
* @param withHead 是否轉換表頭
* @param withIndex 是否轉換索引列
* @param sheetName Sheet名字
* @return
*/
public KDSSheet saveToKDSSheet(KDSBook book,boolean withHead,boolean withIndex,String sheetName)
此外,作為一種比較方便的選擇,也可以通過KDTIOManager提供的接口來實現將KDTable轉換為一個KDS Book的功能,比如:
KDSBook book = table.getIOManager().saveToKDS();通過如下重載的方法,用戶可以指定轉換時選項。
/**
* 將當前的KDTable轉換成KDSBook。<br>
* 默認不帶索引列,但是帶表頭。
* @param bookName
* @return
*/
public KDSBook saveToKDS(String bookName)
/**
* 將當前的KDTable轉換成KDSBook
* @param bookName
* @param withHead 是否轉換表頭
* @param withIndex 是否轉換索引列
* @return
*/
public KDSBook saveToKDS(String bookName,boolean withHead,boolean withIndex)
/**
* 從KDS解析KDTable對象,默認將第一行導入到表頭
* @param sheet
*/
public void parseFromKDS(KDSSheet sheet)
/**
* 從KDS解析KDTable對象
* @param sheet
* @param headRowCount 表頭行數
*/
public void parseFromKDS(KDSSheet sheet,int headRowCount)
KDS數據與其它形式數據的交換
KDS數據是一種網格狀的數據結構,如下類中封裝了從KDS中導出數據到其它數據形式的接口:
com.kingdee.bos.ctrl.kdf.export.ExportManager
目前支持導出到Excel、PDF、CSV、RTF格式的文件。接口詳情請參閱Java Doc。
同時,如下類提供了從Excel文件中導入數據到KDS的接口:
com.kingdee.bos.ctrl.kdf.read.POIXlsReader
目前只支持從Excel文件的導入。接口詳情請參閱Java Doc。
示例:Excel與KDTable之間的導入導出
Excel導入到KDTable
/**
* 從Excel中裝載信息到KDTable,默認裝載第一個Sheet的內容
* @param filesName
* @param headRowCount 指定裝載到表頭中的行數
*/
void loadFromExcel(String fileName,int headRowCount)
{KDSBook book = POIXlsReader.parse(fileName);this.parseFromKDS(book.getSheet(new Integer(0)),headRowCount); }
KDTable導出到Excel
/**
* 將當前KDTable對象作為Excel Sheet添加到一個Excel文件中
* @param fileName Excel文件名
* @param withHead 是否轉換表頭
* @param withIndex 是否轉換索引列
* @param sheetName Sheet名字
*/
void appendToExcel(String fileName,boolean withHead,boolean withIndex,String sheetName)
{File file = new File(fileName);
KDSBook book = null;
if(file.exists())
book = POIXlsReader.parse(fileName);
else
book = new KDSBook(file.getName());
try
{
book.addSheet(null,ioManager.saveToKDSSheet(book,withHead,withIndex,sheetName));
}
catch (Exception err)
{
err.printStackTrace();
}
ExportManager man = new ExportManager();
man.exportToExcel(book,fileName);}