读取在线excel文件内容到datatable中,通过下载在线excel到本地临时文件,读取临时文件的文件流,使用所获得的流经过Excel的帮助类获取全部Excel内容
- 文件转文件流方法
/// <summary>
/// 文件转流
/// </summary>
/// <param name="fileName">文件路径</param>
/// <param name="isDelete">是否删除临时文件</param>
/// <returns></returns>
private static Stream GetFileStream(string fileName, bool isDelete = false)
{
//打开文件
using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
// 读取文件的 byte[]
byte[] bytes = new byte[fileStream.Length];
fileStream.Read(bytes, 0, bytes.Length);
fileStream.Close();
// 把 byte[] 转换成 Stream
Stream stream = new MemoryStream(bytes);
if (isDelete)
{
File.Delete(fileName);//删除临时文件
}
return stream;
}
}
- 下载文件指定url到本地临时文件
/// <summary>
/// 下载指定url到本地临时文件
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
private static Stream FileDownload(string url)
{
using (var client = new System.Net.WebClient())
{
string tempFile = Path.GetTempFileName();
client.DownloadFile(url, tempFile);
return GetFileStream(tempFile, true);
}
}
- 单元测试读取Excel内容
[TestMethod]
public void TestMethod2()
{
var filePath = @"http://xxxxxxx.xlsx";
var stream = FileDownload(filePath);
var dt = NPOIHelper.ImportExceltoDt(stream, false);
Assert.Fail();
}