将多个 Excel 个文件作为一个文件进行流式传输

Stream multiple Excel files as one file

我想使用网络服务或 httphandler 传送大型 Excel 文件。

由于 Excel 文件可能非常大,我想将它们拆分成较小的文件,以减少内存占用。

所以我将有一个包含列 headers 和数据的主 excel 文件。 以及仅包含数据的其他文件。

在下载过程中,我想先流式传输主 excel 文件,然后将所有其他相关 excel 文件附加为一个下载流。 我不想压缩它们!最后应该是一个文件

这可能吗?


主 excel 文件 headers:

所有其他文件将如下所示(没有 headers):

这确实会 return 废话:

void Main()
{
    CombineMultipleFilesIntoSingleFile();
}

// Define other methods and classes here

    private static void CombineMultipleFilesIntoSingleFile(string outputFilePath= @"C:\exceltest\main.xlsx", string inputDirectoryPath = @"C:\exceltest", string inputFileNamePattern="*.xlsx")
    {
        string[] inputFilePaths = Directory.GetFiles(inputDirectoryPath, inputFileNamePattern);
        Console.WriteLine("Number of files: {0}.", inputFilePaths.Length);
        using (var outputStream = File.Create(outputFilePath))
        {
            foreach (var inputFilePath in inputFilePaths)
            {
                using (var inputStream = File.OpenRead(inputFilePath))
                {
                    // Buffer size can be passed as the second argument.
                    inputStream.CopyTo(outputStream);
                }
                Console.WriteLine("The file {0} has been processed.", inputFilePath);
            }
        }
    }

当您请求文件时,不要在第一次请求时下载它。

  1. 请求在AJAX请求中下载文件名。
  2. 对于收到的每个文件名,准备其到服务器的路径。
  3. 为每个文件路径创建隐藏的 iFrame,并指定 src 作为要下载的每个文件的文件路径。

当设置 iFrame 的 src 属性时,它会导航到文件路径,每个 iFrame 将下载单个文件,因此多个 iFrame 下载多个文件。

您不能在单个请求中下载多个文件。就好像你会附加多个文件的流,它会创建一个垃圾文件,一个单独的垃圾文件。