提前谢谢你。我有一个存储 excel 文件的 sFTP 服务器。我想打开并从 sFTP 服务器读取文件,而无需下载到本地或任何地方。我能得到一些想法吗?
要使用 ClosedXML,您必须在下载 nuget 包后在代码顶部编写此 using 语句。
using ClosedXML.Excel;
我写了一个方法来通过 SFTP 读取 excel 文件作为内存流。
public static Stream GetFileStream(SftpClient sftpClient, string sourcePath)
{
var memoryStream = new MemoryStream();
sftpClient.DownloadFile(sourcePath, memoryStream);
memoryStream.Position = 0;
return memoryStream;
}
之后 在
ClosedXML
nuget包的帮助下,阅读stream
的excel内容。
string host = @"host_name";
string remoteDirectory = "directory_path";
using (var sftp = new SftpClient(host, "username", "password"))
{
sftp.Connect();
Stream stream = GetFileStream(sftp, file_full_name);
using (XLWorkbook excelWorkbook = new XLWorkbook(stream))
{
var name = excelWorkbook.Worksheet(1).Name;
//do more things whatever you like as you now have a handle to the entire workbook.
var firstRow = excelWorkbook.Worksheet(1).Row(2);
}
}