2014-11-24 25 views

cevap

4

Hayır, ClosedXML doğrudan mümkün değildir. Kendi CSV dosyanızı oluşturmak için döngüler veya LINQ kullanmanız gerekir. Örneğin

:

System.IO.File.WriteAllLines(csvFileName, 
    worksheet.RowsUsed().Select(row => 
     string.Join(";", row.Cells(1, row.LastCellUsed(false).Address.ColumnNumber) 
          .Select(cell => cell.GetValue<string>())) 
)); 
+0

Tüm sütunlar tek sütun olarak yazılır. –

0

Yanlış o csv için doğru bir biçim değil

row.LastCellUsed(false) 

içinde. Son sütunlar, göreli ayırıcı yerine boş olacak.

0

@ @ @ @ @ @ @ Emanuele, @ Raidri'nin yanıtı düzgün bir CSV formatı oluşturmayacak ve aynı zamanda boş satırları tamamen boş bırakmayacaktır. Bunu düzeltmek için: Hücreler işte ayırıcı varsa

var lastCellAddress = worksheet.RangeUsed().LastCell().Address; 
System.IO.File.WriteAllLines(csvFileName, worksheet.Rows(1, lastCellAddress.RowNumber) 
    .Select(row => String.Join(",", row.Cells(1, lastCellAddress.ColumnNumber) 
     .Select(cell => cell.GetValue<string>())) 
)); 
2

Diğer cevaplar geçerli bir CSV oluşturmak için başarısız olur Bu @Extragorey 'ın cevabı

dayanmaktadır

var lastCellAddress = worksheet.RangeUsed().LastCell().Address; 
File.WriteAllLines(csvFileName, worksheet.Rows(1, lastCellAddress.RowNumber) 
    .Select(r => string.Join(",", r.Cells(1, lastCellAddress.ColumnNumber) 
      .Select(cell => 
     { 
      var cellValue = cell.GetValue<string>(); 
      return cellValue.Contains(",") ? $"\"{cellValue}\"" : cellValue; 
     })))); 

daha iyi bir yoldur

+0

bu doğru biçimde çalışıyor –

İlgili konular