2016-10-07 4 views
0

Je souhaite fournir des fichiers Excel volumineux à l'aide d'un service Web ou d'un httphandler. Comme les fichiers Excel peuvent être de très grande taille, je veux les diviser en fichiers plus petits, afin de réduire l'empreinte de la mémoire. Donc, je vais avoir un excelfile maître qui contient les en-têtes et les données de la colonne. Et d'autres fichiers qui ne contiendront que des données.Diffusion de plusieurs fichiers Excel sous la forme d'un fichier

Pendant le téléchargement, je veux d'abord streamer le fichier master excel puis ajouter tous les autres fichiers excel comme un flux de téléchargement. Je ne veux pas les compresser! Il devrait y avoir un fichier à la fin

Est-ce possible?


fichier maître Excel avec les en-têtes: enter image description here

Tous les autres fichiers ressemblera à ceci (sans en-tête): enter image description here

Cela fait revenir la merde:

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); 
      } 
     } 
    } 
+0

Vous pourriez avoir à construire quelque chose de personnalisé pour cela, mais je suis sûr que c'est possible. – code11

+0

Pourquoi les downvotes, s'il vous plaît expliquer?! – Legends

Répondre

2

Lorsque vous demandez un fichier, ne le téléchargez pas à la première demande.

  1. Demande de téléchargement des noms de fichiers dans la requête AJAX.
  2. Pour chaque nom de fichier reçu, préparez son chemin d'accès au serveur.
  3. Créez des iFrames masquées pour chaque chemin de fichier et spécifiez src comme chemin de fichier pour chaque fichier à télécharger.

Lorsque attribut iFrame src est défini, il naviguera sur le chemin du fichier et chaque iFrame téléchargera seul fichier, si plusieurs iFrame télécharge plusieurs fichiers.

Vous ne pouvez pas télécharger plusieurs fichiers en une seule requête. Comme si vous ajoutiez le flux de plusieurs fichiers, il créera un fichier poubelle, un seul fichier poubelle.