網頁在線顯示處理excel


近日在項目中碰到了一個需求,客戶的excel文件中的數據根據其他excel文件生成,生成后還需要編輯后再發布出去,這樣其它人才能夠下載查閱。excel文件的生產采用apache下的poi工具可以很好的處理,如果生成的臨時文件讓用戶下載編輯后重新上傳也可以滿足用戶的需求,但是客戶體驗不好。因此需要能夠讓用戶通過瀏覽器打開excel並實現保存功能。

      經過個人的一番查找到了開源的 zk spreedsheet 組件。其也有商業版本,不過開源版本已經能夠滿足項目的要求了!O(∩_∩)O~  產品的訪問地址為:https://www.zkoss.org/product/zkspreadsheet 下載頁面為:https://www.zkoss.org/download/zkspreadsheet  這塊可以下載到開源版本和相關的demo。官方也有相關的文檔和例子可以參照學習。

 我在項目中同時使用了其zul框架,好像必須使用其自帶的ui框架。

1、頁面顯示excel文件

<window title="" height="100%" width="100%" apply="excel.view">
<spreadsheet id="ss"

vflex="1" hflex="1" maxVisibleRows="150" maxVisibleColumns="40"
showToolbar="true" showSheetbar="true" showFormulabar="false" showContextMenu="false"/>
</window>

 

其中apply標簽為對應的backbean,有點類似asp.net,通過java代碼可以控制顯示。spreadsheet有個src標簽可以直接給一個文件路徑,不過我是通過excel下view類來動態控制要顯示的那個文件

2、excel.view類

public class view extends SelectorComposer<Component>{
@Wire
private Spreadsheet ss;



@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);

//這里可以指定不同的文件來進行顯示
File file=new File(“c:\\test.xls”);
if (file.exists()){
ss.setSrc(“c:\\test.xls”);
ss.disableUserAction(AuxAction.ADD_SHEET, true);
actionManager.registerHandler(
DefaultUserActionManagerCtrl.Category.AUXACTION.getName(),
AuxAction.SAVE_BOOK.getAction(), new SaveBookHandler());
}else{
ss.setVisible(false);
Messagebox.show("沒有找到對應的文件!", "錯誤", Messagebox.OK, Messagebox.ERROR);
}


}

工具欄自動的前三個按鈕,新建、保存和保存成pdf是沒有任何功能的,需要使用者根據實際情況來自定義實現。

實現接口UserActionHandler,如下代碼所示:

@Override
public boolean isEnabled(Book book, Sheet sheet) {
return book!=null;
}

@Override
public boolean process(UserActionContext ctx){
try{
Book book = ctx.getBook();
Exporter exporter=Exporters.getExporter();
File file = new File(url);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
exporter.export(book, fos);
}finally{
if(fos!=null){
fos.close();
}
}



}catch(Exception e){
e.printStackTrace();
}
return true;
}

 

然后通過UserActionManager進行注冊即可(參考 view.excel類中紅色部分)

 

至此一個簡單excel在線查看編輯工具就完成了,當然了個人覺得這個工具還有一些不足,如工具欄的按鈕不能隱藏,只能禁用,即使禁用了,但是還是可以點擊的!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM