2016-05-25 13 views
0

Hallo, ich muss einige CSV-Dateien aus Linq-Abfrage Ergebnis mit LinqToCsv liibrary in Excel-Arbeitsmappe importiert importieren, indem Sie das Komma in Spalten zwischen Daten ändern?Importieren Sie Csv-Dateien in Excel und ersetzen Sie Komma, das durch Spalten trennt

`//Generate CSV Files for each item in the Listview 
     CsvFileDescription outpCsvFileDescription = new CsvFileDescription 
     { 
      SeparatorChar = ',', 
      FirstLineHasColumnNames = true 
     }; 

     for (int i = 0; i < listView.Items.Count; i++) 
     { 
      dynamic currentItemInLoop = listView.Items[i]; 
      //On est obligé de cast cette variable en String pour qu'on puisse l'utiliser dans le LinQ 
      //currentItemInLoop.nameAttribute => MainWindow.xaml -> ListView x:Name="listView" -> Columns... 
      String frs = (String)currentItemInLoop.Name; 
      DateTime myDate = (DateTime) currentItemInLoop.TransactionDate; 
      var infoEcheances = from f in db.F_ECHEANCES 
           join c in db.F_LECRITURES on f.ECH_No equals c.ECH_No 
           where 
        f.ECH_Intitule == frs && 
        EntityFunctions.TruncateTime(f.cbModification) == 
        EntityFunctions.TruncateTime(DatePicker.SelectedDate) 
       select 
        new 
        { 
         f.ECH_DateEch, 
         f.ECH_RefPiece, 
         f.ECH_Libelle, 
         c.LEC_Montant, 
         f.ECH_Montant 
        }; 

      CsvContext cc = new CsvContext(); 
      string myPath = @"C:\Users\DefaultAccount\Desktop\Projet Top Of Travel\FichiersCSV\"; 
      string filename = string.Format(frs); 
      filename = Regex.Replace(filename + " " + myDate, @"[^0-9a-zA-Z]", " "); 
      string finalPath = System.IO.Path.Combine(myPath, filename + ".csv"); 
      cc.Write(infoEcheances, finalPath, outpCsvFileDescription);` 
+0

Mögliches Duplikat von http://stackoverflow.com/questions/26648641/c-sharp-convert-csv-to-xls-using-existing-csv-file –

+0

Excel öffnet keine CSV-Dateien, es importiert * Sie verwenden lokalisierte Standardwerte. In einigen Ländern ist das Standardtrennzeichen ';'. Sie können verschiedene Einstellungen verwenden, indem Sie zum Menü "Daten" gehen. Um dies zu vermeiden, verwenden Sie statt einer CSV-Datei EPPLus oder eine ähnliche Bibliothek, um eine 'xlsx'-Datei zu erstellen. Eine andere Möglichkeit besteht darin, einfach die Datei mit dem gewünschten Trennzeichen zu erstellen. –

Antwort

1

Sie können es direkt in Excel von C# mit COM.

using Excel = Microsoft.Office.Interop.Excel; 

public class ExcelReports 
{ 
    public Excel.Application excelApp; 
    public Excel.Workbook excelWorkbook; 
    public Excel.Worksheet excelWorksheet; 
    public int row = 1; 
    public int col = 1; 

    public ExcelReports(String fullName) 
    { 
     excelApp = new Excel.Application(); 

     Excel.Workbook newWorkbook = excelApp.Workbooks.Add(); 
     excelWorkbook = excelApp.ActiveWorkbook; 

     excelWorksheet = (Excel.Worksheet)excelWorkbook.Worksheets.Add(); 
     excelWorksheet.Cells.ClearContents(); 
     excelWorksheet.Cells[row, col] = "hello"; 
    } 

}

Code, um eine Zelle zu setzen .... von meinem Code schneiden ... Sie würden es Ausgabe von yr Array jede Zeile ändern. Es muss möglicherweise massiert werden, um zu arbeiten. Es gibt viele umfangreiche Beispiele im Internet. Es gibt einige Optimierungen, um das schnell zu machen.

Excel wird auch CSV-Dateien importieren und Ihnen eine gewisse Kontrolle darüber geben, was die Begrenzer usw. sind, aber dieser Prozess ist manuell.

Verwandte Themen