2017-01-31 6 views
1

午後。問題に直面した。 Excelで* .txtファイルを開くタスクがあります。Excelブックのtxtファイルからデータを転送

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); 

コードブックは存在しますが、空です。 テキスト文書のようです。

enter image description here

私が間違って何をしましたか?

+0

デリミタはタブですか。 –

+0

また、Sub OpenText(Filename As String、[Origin]、[StartRow]、[DataType]、[TextQualifier As XlTextQualifier = xlTextQualifierDoubleQuote]、[ConsecutiveDelimiter]、[Tab]、[セミコロン]、[コンマ]、[スペース]、[その他]、[OtherChar]、[FieldInfo]、[TextVisualLayout]、[DecimalSeparator]、[ThousandsSeparator]、[TrailingMinusNumbers]、[Local] 'OtherChar'(' misValue'ではなく)に 'false'を、' TrailingMinusNumbers'と 'Local'には何かを設定する必要があるとしますか? –

+0

はい、私はセパレータがタブであると確信しています。テキスト文書はプログラムで作成されます – Kuvon

答えて

0

コードの問題は、読んだブックを保存していないことですが、空のブックを保存することです。新しいreadedワークブックを保存することになる

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

その方法:この中へ

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

:この行を変更してみてください。

編集

あなたが必要とされないオブジェクトを作成し、それが開いているExcelのプロセスを残していたので、私はあなたのコードを掃除しました。コードは次のようにする必要があります。

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

ありがとうございました。あなたは私をたくさん助けました – Kuvon

関連する問題