2011-01-24 29 views
8

Estoy trabajando en una aplicación web separada en bloques y obtengo un objeto CSV de un compañero de trabajo mío que debo convertir a XLS para pasarlo a un procesador de Excel que hayan creado. Este objeto CSV está delimitado por el carácter ";".Convertir CSV en XLS

Lo que me gustaría saber es cómo puedo convertir el objeto CSV en XLS programáticamente.

Respuesta

16

Debe ser fácil para usted convertir el objeto CSV en una matriz de matrices de cadenas y luego hacer como en el siguiente ejemplo (deberá agregar una referencia a 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

Voy a tratar de seguir tu ejemplo y te daré feedback en un momento, gracias. – Hallaghan

+0

¿cómo se puede hacer la conversión de csv a una matriz de cadenas? – user65165

+0

@ user65165 Si su csv contiene solo caracteres no escapados, puede usar una cadena. De lo contrario, puede usar una de las bibliotecas de analizador csv disponibles –

0

Una opción es usar una biblioteca de terceros para crear el archivo XLS, y la otra es usar interoperabilidad COM para manipular Excel y abrir el archivo CSV y guardarlo como XLS.

+0

¿hay algún ejemplo en la web acerca de su segunda opción? – Hallaghan

2

¿El resultado debe estar en el formato XLS heredado? Si XLSX es aceptable, EPPlus es una gran biblioteca de .NET para escribir hojas de cálculo. El anterior excellibrary puede producir archivos XLS.

Solo unas pocas líneas de código deberían ser necesarias para analizar el archivo CSV (solo tenga cuidado con las comillas dobles) y escriba la hoja de cálculo de salida.

+0

Sí, uno de los requisitos es que se pase el formato XLS. – Hallaghan

+0

En ese caso, podría valer la pena examinar excellibrary, que es una biblioteca más antigua que escribe archivos 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

¿Puede agregar una explicación de su código? – Soma