我試圖找到一種方法來檢查通過網絡(使用HTTP URL)的Excel(XLS)文件的內容,如果內容(數據來自特定的單元格和表單名稱)很好,可以在本地保存。 我現在所做的是我下載文件,用Iterop檢查,如果內容不匹配,我刪除/刪除它。 我一直在考慮用BinaryReader獲取文件內容,並將其轉換爲FileStream,但沒有找到辦法做到這一點。 目前我還在檢查NPOI庫,但是到現在爲止還沒有找到一種方法來acomplish這...試圖讀取Excel(xls)文件,而無需先下載它
0
A
回答
1
如果使用的是EPPlus庫可以通過一個Stream
到構造函數的ExcelPackage
。
不幸的是,流需要支持查找操作,這就排除了直接傳遞Web響應流的問題。
你可以,但是,複製到MemoryStream
如下:
var webRequest = HttpWebRequest.Create("http://spreadsheetpage.com/downloads/xl/worksheet%20functions.xlsx") as HttpWebRequest;
var webResponse = webRequest.GetResponse();
using (var webResponseStream = webResponse.GetResponseStream())
using (var memoryStream = new MemoryStream())
{
webResponseStream.CopyTo(memoryStream);
using (var excelPackage = new ExcelPackage(memoryStream))
{
var value = excelPackage.Workbook.Worksheets.First().Cells[1, 1].Value;
//etc...
}
}
0
@Stewart_R感謝一個MemoryStream提示! 我只需要使用NPOI而不是EPPlus。 EPPlus庫僅適用於OOXML(我需要支持較舊的xls格式),但NPOI HSSFWorkbook構造函數也接受支持seek操作的流。 所以基本上解決方案是將HttpWebRequest響應流轉換爲MemoryStream,並使用MemoryStream作爲參數來初始化HSSFWorkbook構造函數。不幸的是,這個構造函數在編譯期間沒有錯誤地接受所有類型的流(比如System.IO.Stream),但是會產生一個關於缺少查找操作支持的運行時異常。無論如何,好事是MemoryStream工作正常(現在:))。 此代碼的工作對我來說:
using (var memoryStream = new MemoryStream())
{
webResponseStream.CopyTo(memoryStream);
HSSFWorkbook workbook = new HSSFWorkbook(memoryStream);
HSSFSheet sheet = (HSSFSheet)workbook.GetSheetAt(0);
Console.WriteLine("Name of the sheet is: {0}", sheet.SheetName);
Console.ReadKey(true);
}
相關問題
- 1. 讀取tiff文件的尺寸和分辨率,而無需先加載它
- 2. 無法讀取XLS文件時,我下載它們,並嘗試打開文件對話框C#打開它們
- 3. 讀取Excel文件,而無需整個文件服務器
- 4. 在PHP中讀取xls(Excel)文件
- 5. BDLC需要安裝Excel才能讀取.xls文件?
- 6. 在S3中讀取和解析CSV文件而無需下載整個文件
- 7. 讀取Excel與POI文件,而無需頭
- 8. 下載Excel中通過AJAX MVC文件,而無需在ASP.Net/C#
- 9. 列出文件而無需下載
- 10. 下載。廣州文件,而無需getstore
- 11. PHP讀取文件而不是下載
- 12. 閱讀Excel文件的VBA宏(或vbaProject.bin),而無需在MS Excel中打開它
- 13. 試圖從Excel文件中讀取Javascript
- 14. 從txt文件中讀取數據而不下載它?
- 15. 重新讀取python中的csv文件,而無需再次加載它
- 16. 從VB6讀取XLS文件
- 17. TFS 2010 - 開放WI附件而無需首先下載
- 18. 試圖用PHP強制下載mp3文件,但它試圖下載php文件而不是
- 19. 從xls和xlsx excel文件讀取和寫入文件
- 20. 下載.xls文件的href
- 21. Grails .xls文件下載
- 22. excel文件,而閱讀它通過JavaScript
- 23. 的Apache獲取文件日期,而無需下載
- 24. 閱讀Java中幾列Excel(.xls)文件
- 25. 在Java中閱讀Excel文件(.xls)
- 26. 閱讀需要,如何從在線大文件中讀取前256字節而無需下載?
- 27. 如何讀取像文本一樣的excel(.xls)文件?
- 28. 加載Excel(.xls)文件的C++庫
- 29. POI讀取文件,而無需更新文件的時間戳
- 30. 如何從URL文件名,而無需下載文件c#
XLS使用BIFF格式,我肯定會推薦一個庫來解析這個(是可以做到的,但它會需要一段時間,這取決於有多少信息寫解析器你想),但你需要找到一個接受流或字節[]。推薦圖書館的主題是 –
你會建議有人寫一個自己的解析器,因爲推薦一個圖書館是脫離主題?如果這是一個規則,這是一個奇怪的。 – Denis
關於圖書館推薦,我肯定會去NPOI。有人可以用SpreadsheetGear I asume來達到同樣的效果,但NPOI是開源的,我的POV的優點是什麼。 – Denis