我试图找到一种方法来检查通过网络(使用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