2012-09-07 56 views

回答

2

你最好看看這篇文章。使用戰斧2.0(http://myfaces.apache.org/tomahawk-project/tomahawk20/index.html)由BalusC的解決方案是偉大的,你需要

JSF 2.0 File upload

一切都在那裏

+0

這是我的代碼工作簿簿= Workbook.getWorkbook(新文件( 「d:/Docs/MNC/document.xls」)); \t \t Sheet sheet = workbook.getSheet(「Sheet」);生病添加excl文件如圖所示,但我想要得到它,我點擊瀏覽n選擇導入buton..pls幫助我如何獲得此路徑,當用戶點擊瀏覽並導入 – user1654095

+0

你的意思是當你點擊瀏覽器時瀏覽按鈕被採取直接到那個文件? – MaVRoSCy

+0

雅代替name..i要從ui..how我可以選擇的文件路徑,用戶的路徑名y中的文件的硬編碼路徑? – user1654095

6

我需要知道如何使用瀏覽已上傳的獲取文件的路徑爲了讀取excel文件的內容。

這裏有一個主要的思考錯誤。

想象一下,我是希望上傳文件的客戶端,並且您是需要獲取文件內容的服務器。我給你的路徑c:\path\to\foo.xls作爲唯一的信息。你將如何爲服務器不斷得到它的內容是什麼?你有一個開放的TCP/IP連接到我的本地硬盤文件系統?真?是否所有其他人的本地磁盤文件系統都能夠通過Internet輕鬆訪問所有敏感信息?

這不是上傳文件的方式。這如果服務器在物理上是同機作爲客戶端運行只有永遠的工作,這樣就可以只使用FileInputStream與路徑(這隻會發生在本地開發環境)。

您應該對客戶端已經與HTTP請求主體一起發送給您的唯一文件內容感興趣。用HTML來說,你可以使用<input type="file">。但是直到即將到來的JSF 2.2沒有相應的標準JSF <h:xxx>這個組件。您需要查找爲此提供組件的JSF組件庫。在你的情況下,用RichFaces(在你的問題中標記),你可以使用<rich:fileUpload>。目前還不清楚這RichFaces的您正在使用的版本,但對於RF 3.3.3,你可以找到在3.3.3 showcase site並在4.0 showcase site RF 4.0一個完整的例子。

無論您選擇什麼方式,您應該在JSF受管bean中最終以代表文件內容的byte[]InputStream結束。那麼你所有的存儲它,無論你使用例如FileOutputStream希望服務器的本地磁盤文件系統上的自由。你甚至可以也只需直接將其以任何Excel的API你使用,大部分都只是採取的方法的InputStreambyte[]

0
String fileName = FilenameUtils.getName(uploadedFile.getName()); 
byte[] bytes = uploadedFile.getBytes(); 
FileOutputStream outputStream = null; 
try { 
    String filePath = System.getProperty("java.io.tmpdir") + "" + fileName; 
    outputStream = new FileOutputStream(new File(filePath)); 
    outputStream.write(bytes); 
    outputStream.close(); 
    readExcelFile(filePath); 
} catch (Exception ex) { 

} 
In the above code Iam uploading the file using tomahawk after uploading storing the  file in a temporary location.And from there i will be reading using poi.                       
public static void readExcelFile(String fileName) 
{ 
    try{ 
     FileInputStream myInput = new FileInputStream(fileName); 
     POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); 
     org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(myFileSystem); 
     org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0); 
     Iterator rowIter = sheet.rowIterator(); 
      for(Row row : sheet) { 
      //u can read the file contents by iterating. 
      } 
    } catch (Exception ex) { 

    } 

} 
相關問題