Создайте файл Excel прямо на FTP с помощью C # с помощью библиотеки EPPlus - PullRequest
0 голосов
/ 25 июня 2018

Я хочу создать файл Excel на FTP-сервере.Я попытался создать файл локально, и он работает так, чтобы проблема: Как мне создать его в FTP вместо локального диска?

ExcelPkg.SaveAs(
  new FileInfo(@"C:\ExcelTest\" + DateTime.Now.ToString("yyyy-MM-dd--hh-mm-ss") + ".xlsx"))

И я хочу создать этот файл непосредственно на FTP, а не локально, а затем переместить его.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Мне пришлось сделать 2 разных операции: сначала создайте файл Excel, а затем загрузите существующий файл и затем удалите его. Использование библиотеки под названием WinSCP Я не смог найти ни одной библиотеки, которая бы поддерживала шифрование 90-х годов, такое как неявный FTP через TLS и потоковый API одновременно. Таким образом, у меня не было возможности напрямую создать файл Excel на сервере, но временно создать его локально, чтобы скопировать и удалить его одновременно, это почти то же самое, что я получаю тот же результат. И вот решение для этого

try
{
    // Setup session options
    SessionOptions sessionOptions = new SessionOptions
    {
        Protocol = Protocol.Ftp,
        HostName = @"xx.xx.x.x",
        UserName = "xxxx",
        Password = "xxxxxx",
        PortNumber = xxxx,
        FtpSecure = FtpSecure.Implicit, //Encryption protocol
        GiveUpSecurityAndAcceptAnyTlsHostCertificate = true // Accepts any certificate
    };

    using (Session session = new Session())
    {
        // Connect
        session.Open(sessionOptions);

        // Upload files
        TransferOptions transferOptions = new TransferOptions();
        transferOptions.TransferMode = TransferMode.Binary;

        TransferOperationResult transferResult;
        // Copy's Existing file to Connected server and delets the old one.
        // change by replace "true" with "false".
        transferResult =
            session.PutFiles(
                ExistingPath, "/ScheduleJobs/" + RemotePath, true, transferOptions);

        // Throw on any error
        transferResult.Check();

        // Print results
        foreach (TransferEventArgs transfer in transferResult.Transfers)
        {
            Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
            Console.ReadLine();
        }

    }

}
catch (Exception e)
{
    Console.WriteLine("Error: {0}", e);
}
0 голосов
/ 25 июня 2018

Используйте ExcelPackage.SaveAs перегрузку, которая принимает Stream и передает ему поток запросов FTP, как, например, показано в:
Загрузить потоковый документ в памяти (.docx) на FTP с C #?


Я не могу сейчас проверить EPPlus, но это должно работать:

WebRequest request = WebRequest.Create("ftp://ftp.example.com/remote/path/sheet.xlsx");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(username, password);
using (Stream ftpStream = request.GetRequestStream())
{
    ExcelPkg.SaveAs(ftpStream);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...