2011-01-24 5 views
8

Je travaille dans une application web séparée en blocs et je reçois un objet CSV d'un de mes collègues que je dois convertir en XLS pour être passé dans un processeur Excel qu'ils ont construit. Cet objet CSV est délimité par le caractère ";".Convertir CSV en XLS

Ce que je voudrais savoir, c'est comment je peux convertir l'objet CSV en XLS par programmation.

Répondre

16

Il devrait vous être facile de convertir l'objet CSV en un tableau de tableaux de chaînes, puis faites comme dans l'exemple suivant (vous devrez ajouter une référence à Microsoft.Office.Interop.Excel):

using Excel = Microsoft.Office.Interop.Excel; 

Excel.Application excel = new Excel.Application(); 
Excel.Workbook workBook = excel.Workbooks.Add(); 
Excel.Worksheet sheet = workBook.ActiveSheet; 

var CsvContent = new string[][] 
{ 
    new string[] {"FirstName", "UserName", "PostCode", "City"}, 
    new string[] {"John", "Smith", "4568", "London"}, 
    new string[] {"Brian", "May", "9999", "Acapulco"} 
}; 

for (int i = 0; i < CsvContent.Length; i++) 
{ 
    string[] CsvLine = CsvContent[i]; 
    for (int j = 0; j < CsvLine.Length; j++) 
    { 
     sheet.Cells[i + 1, j + 1] = CsvLine[j]; 
    } 
} 

workBook.SaveAs(@"C:\Temp\fromCsv.xls"); 
workBook.Close(); 
+0

Je vais essayer de suivre votre exemple et je vous répondrai dans un instant, merci. – Hallaghan

+0

comment pouvez-vous faire la conversion csv au tableau de chaînes? – user65165

+0

@ user65165 Si votre csv ne contient que des caractères non échappés, vous pouvez utiliser string.Split sinon vous pouvez utiliser l'une des bibliothèques d'analyseurs csv disponibles –

0

Une option consiste à utiliser une bibliothèque tierce pour créer le fichier XLS et l'autre consiste à utiliser COM interop pour manipuler Excel afin d'ouvrir le fichier CSV et l'enregistrer en tant que XLS.

+0

y at-il par exemple sur le web au sujet de votre 2ème option? – Hallaghan

2

La sortie doit-elle être au format XLS hérité? Si XLSX est acceptable, EPPlus est une excellente bibliothèque .NET pour l'écriture de feuilles de calcul. L'ancien excellibrary peut produire des fichiers XLS.

Seules quelques lignes de code devraient être nécessaires pour analyser le fichier CSV (attention aux doubles guillemets) et écrire la feuille de calcul en sortie.

+0

Oui, l'une des exigences est que le format XLS soit transmis. – Hallaghan

+0

Dans ce cas, il pourrait être intéressant de regarder excellibrary, qui est une ancienne bibliothèque qui écrit des fichiers XLS. http://code.google.com/p/excellibrary – Quppa

0
using Excel = Microsoft.Office.Interop.Excel; 

    public void Convert_CSV_To_Excel() 
    { 

     // Rename .csv To .xls 
     System.IO.File.Move(@"d:\Test.csv", @"d:\Test.csv.xls"); 

     var _app = new Excel.Application(); 
     var _workbooks = _app.Workbooks; 

     _workbooks.OpenText("Test.csv.xls", 
           DataType: Excel.XlTextParsingType.xlDelimited, 
           TextQualifier: Excel.XlTextQualifier.xlTextQualifierNone, 
           ConsecutiveDelimiter: true, 
           Semicolon: true); 
     // Convert To Excle 97/2003 
     _workbooks[1].SaveAs("NewTest.xls", Excel.XlFileFormat.xlExcel5); 

     _workbooks.Close(); 
    } 
+0

Pouvez-vous ajouter une explication de votre code s'il vous plaît – Soma