2017-01-31 5 views
1

Guten Tag. Mit dem Problem konfrontiert. Es gibt eine Aufgabe zum Öffnen einer * .txt-Datei in Excel.Übertragen von Daten aus einer TXT-Datei in Excel-Buch

Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 

if (xlApp == null) 
{ 
    TaskDialog.Show("ups", "Where's your Excel?!"); 
} 

Excel.Workbook xlWorkBook; 
Excel.Worksheet xlWorkSheet; 

object misValue = System.Reflection.Missing.Value; 


xlWorkBook = xlApp.Workbooks.Add(misValue); 
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

xlApp.Workbooks.OpenText 
(
    @"C:\newPath\OveralFile.txt", 
    Excel.XlPlatform.xlWindows, 
    1,    
    Excel.XlTextParsingType.xlDelimited, 
    Excel.XlTextQualifier.xlTextQualifierDoubleQuote, 
    true,   
    true,   
    false,   
    false,   
    false,   
    false,   
    Type.Missing, 
    misValue, 
    Type.Missing, 
    ".",   
    "," 
); 

xlWorkBook.SaveAs(@"C:\newPath\csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 


xlWorkBook.Close(true, misValue, misValue); 

xlApp.Quit(); 


Marshal.ReleaseComObject(xlWorkSheet); 
Marshal.ReleaseComObject(xlWorkBook); 
Marshal.ReleaseComObject(xlApp); 

Nachdem das Codebuch existiert, aber leer ist. Es sieht wie ein Textdokument aus.

enter image description here

Was ich falsch gemacht habe?

+0

Sind Sie sicher, dass das Trennzeichen eine Registerkarte ist? –

+0

Vielleicht haben Sie auch einige Felder pro 'Sub OpenText verpasst (Dateiname als String, [Ursprung], [StartRow], [Datentyp], [TextQualifikator als XlTextQualifier = xlTextQualifierDoubleQuote], [KonsekutivDelimiter], [Tab], [Semikolon], [Komma ], [Space], [Andere], [OtherChar], [FieldInfo], [TextVisualLayout], [DecimalSeparator], [ThousandsSeparator], [TrailingMinusNumbers], [Local]) 'z Angenommen, Sie sollten 'false' für' OtherChar' (nicht 'misValue') und etwas für' TrailingMinusNumbers' und 'Local' haben? –

+0

Ja, ich bin sicher, dass das Trennzeichen ein Tab ist. Ein Textdokument wird programmgesteuert erstellt. – Kuvon

Antwort

0

Das Problem mit Ihrem Code ist, dass Sie die readed Arbeitsmappe nicht speichern, sondern eine leere. Versuchen Sie, diese Linie zu ändern:

xlWorkBook.SaveAs(@"C:\newPath\csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, 
        misValue, misValue, misValue, misValue, 
        Excel.XlSaveAsAccessMode.xlExclusive, misValue, 
        misValue, misValue, misValue, misValue); 

In diesem:

xlApp.Workbooks[2].SaveAs(@"C:\newPath\csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, 
          misValue, misValue, misValue, misValue, 
          Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, 
          misValue, misValue, misValue); 

diese Weise können Sie den neuen readed Arbeitsmappe Speicher würden.

bearbeiten

ich Ihren Code gereinigt haben, weil Sie Objekte nicht erforderlich zu schaffen und es war verlassen Excel Prozesse offen. Der Code sollte wie folgt aussehen:

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 
object misValue = System.Reflection.Missing.Value; 

xlApp.Workbooks.OpenText 
    (
    @"C:\newPath\OveralFile.txt", 
    Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, 
    1, 
    Microsoft.Office.Interop.Excel.XlTextParsingType.xlDelimited, 
    Microsoft.Office.Interop.Excel.XlTextQualifier.xlTextQualifierDoubleQuote, 
    true, 
    true, 
    false, 
    false, 
    false, 
    false, 
    Type.Missing, 
    misValue, 
    Type.Missing, 
    ".", 
    "," 
); 

xlApp.Workbooks[1].SaveAs(@"C:\newPath\csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, 
         misValue, misValue, misValue, misValue, 
         Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, 
         misValue, misValue); 

xlApp.Workbooks[1].Close(); 

xlApp.Quit(); 

Marshal.ReleaseComObject(xlApp.Workbooks); 

Marshal.ReleaseComObject(xlApp); 
+0

Vielen Dank. Sie haben mir sehr geholfen – Kuvon

Verwandte Themen