1

テキスト ファイルを Excel ワークブックに取得する次のコードがあります。

    Dim XlApp As Excel.Application = New Excel.Application
    Dim XlWbk As Excel.Workbook = XlApp.Workbooks.Add
    Dim SheetName As String = "Sheet1"
    Dim XlWkst As Excel.Worksheet = FindSheet(XlWbk, SheetName)
    Dim XlRng As Excel.Range = Nothing

    If XlWkst Is Nothing Then
        XlWkst = DirectCast(XlWbk.Sheets.Add(After:=XlWbk.Sheets(XlWbk.Sheets.Count), _
        Count:=1, Type:=Excel.XlSheetType.xlWorksheet), Excel.Worksheet)
    End If

    Dim Lines() As String = File.ReadAllLines("C:\TEMP\FlowgateNNL_Mar2011_base.txt")
    Dim RC(Lines.Length - 1)() As String
    For I As Integer = 0 To Lines.Length - 1
        RC(I) = Lines(I).Split(CChar(vbTab))
    Next

    XlRng = XlWkst.Range("a1")
    XlRng.Value = RC

    XlApp.Visible = True

この方法は、コンピューターの Excel にダンプするために CSV ファイルを読み取って解析する最速の方法のようです。窒息してXlRng.Value = RCいる。Excel は RC が好きではないようです。

Excelにデータを受け入れさせるためのアイデアはありますか?

4

3 に答える 3

1

セルの値をCSV全体を含む配列に設定していますか?これはタイプエラーをスローすると思います。これはおそらくあなたが望むものに沿ったものです。

    Dim XlApp As Excel.Application = New Excel.Application
    Dim XlWbk As Excel.Workbook = XlApp.Workbooks.Add
    Dim SheetName As String = "Sheet1"
    Dim XlWkst As Excel.Worksheet = FindSheet(XlWbk, SheetName)
    Dim XlRng As Excel.Range = Nothing

    If XlWkst Is Nothing Then
        XlWkst = DirectCast(XlWbk.Sheets.Add(After:=XlWbk.Sheets(XlWbk.Sheets.Count), _
        Count:=1, Type:=Excel.XlSheetType.xlWorksheet), Excel.Worksheet)
    End If

    Dim Lines() As String = File.ReadAllLines("C:\TEMP\FlowgateNNL_Mar2011_base.txt")

    For I As Integer = 0 To Lines.Length - 1
        XlRng = XlWkst.Range("a1").Offset(I, 0)
        Dim RC() As String = Lines(I).Split(CChar(vbTab))
        For J As Integer = 0 To RC.Length - 1
            XlRng = XlRng.Offset(0, J)
            XlRng.Value = RC(J)
        Next
    Next

    XlApp.Visible = True
于 2012-12-20T18:34:56.807 に答える
1

有効な CSV ファイルがある場合は、CSV の奇妙な問題 (引用など) をすべて処理できる特殊な CSV データリーダーを使用してください。個人的には、 http: //kbcsv.codeplex.com/ がとても気に入っています。使いやすく、高速です。

次に、相互運用部分をダンプし、EPPLUSライブラリを使用してデータを Excel ファイルに書き込みます。これは、はるかに高速であり、驚くほど簡単です。ワークフローは次のようになります: KBCSV を使用して、データをデータテーブルにロードします。EPPLUS のメソッド「LoadFromDataTable」を使用して、新しい Excel ファイルを生成し、保存します。終わり!

于 2013-07-08T09:57:10.727 に答える