2011-01-24 8 views
8

Bloklar halinde ayrılmış bir web uygulamasında çalışıyorum ve oluşturdukları bir Excel İşlemcisine iletilmek üzere XLS'ye dönüştürmem gereken bir iş arkadaşımdan bir CSV nesnesi alıyorum. Bu CSV nesnesi, ";" karakteriyle sınırlandırılmıştır.CSV'yi XLS'ye dönüştürme

Bilmek istediğim, CSV nesnesini nasıl XLS'ye programlı olarak dönüştürebildiğim.

cevap

16

CSV nesnesini bir dizi dizi dizisine dönüştürmeniz ve ardından aşağıdaki örnekte olduğu gibi (Microsoft.Office.Interop.Excel'e bir başvuru eklemeniz gerekir):

senin 2 seçenek hakkında web üzerinde herhangi bir örnek
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

Örneğinizi takip etmeye çalışacağım ve size bir süre sonra geri bildirim vereceğim. – Hallaghan

+0

csv dizgisi dizisine dönüştürmeyi nasıl yapabilirsiniz? – user65165

+0

@ user65165 Eğer csv'iniz sadece kaçak olmayan karakterler içeriyorsa string.split'i kullanabilirsiniz, aksi takdirde csv ayrıştırıcı kütüphanelerinden birini kullanabilirsiniz –

0

XLS dosyası oluşturmak için bir üçüncü taraf kitaplığı kullanmak için bir seçenek, diğeri ise CSV dosyasını açıp Excel'i XLS olarak kaydetmesi için COM birlikte çalışmasını kullanmaktır.

+0

var mı? – Hallaghan

2

Çıkışın eski XLS biçiminde olması gerekiyor mu? XLSX kabul edilebilirse, EPPlus elektronik tabloları yazmak için harika bir .NET kütüphanesidir. Eski excellibrary, XLS dosyalarını üretebilir.

CSV dosyasının ayrıştırılması için yalnızca birkaç satırlık kodun (yalnızca çift tırnak işaretlerine dikkat edin) ve çıktı e-tablosunun yazılması için gerekli olması gerekir.

+0

Evet, gereksinimlerden biri XLS biçiminin geçirilmesidir. – Hallaghan

+0

Bu durumda, XLS dosyalarını yazan eski bir kitaplık olan excellibrary'e bakmaya değer olabilir. 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

Kodunuzun açıklamasını ekleyebilir misiniz? – Soma