复制&将整个.txt文件粘贴到VB.net中的Excel中

时间:2013-02-23 10:03:10

标签: vb.net-2010

可能是一个愚蠢的问题,在VBA中,我会手动完成这个问题。创建一个宏,但我不知道如何在VB.net中做到这一点,如果有办法让我知道这将是伟大的!

无论如何,我想在VB.net中做的相当于手动选择整个.TXT文件&将它粘贴到Excel工作表的第一个单元格中...我可以做的文件处理,我只是不知道最好的方法去复制&糊。

例如,我想我可以阅读整个.TXT文件&将它逐行写入剪贴板&然后将剪贴板粘贴到Excel文件中,但我想这样效率很低!!!

2 个答案:

答案 0 :(得分:0)

假设您可以只使用一个名为“LEAGUE”的工作表准备一个空的excel文件 在此工作表中,您已在第一行中定义了以下值(每个单元格各一个)

  

TEAMNAME PL W D L F A Dif Pts

现在你可以编写像这样的伪代码,(需要一些测试):

Dim results() = File.ReadAllLines("yourfile.txt")

Dim connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;" + 
                       "Data Source={0};Extended Properties='Excel 12.0;" + 
                       "HDR=YES;IMEX=0'", "yourexcelfile.xlsx")

Using cn = new OleDbConnection(connectionString)
    cn.Open();
    Dim sqlCommand = new OleDbCommand("INSERT INTO [LEAGUE$] " + 
                         "(TEAMNAME,PL,W,D,L,F,A,Dif,Pts)" +
                         "VALUES(?,?,?,?,?,?,?,?,?)", cn)

    sqlCommand.Parameters.AddWithValue("@team", string.Empty)
    sqlCommand.Parameters.AddWithValue("@played", string.Empty)
    sqlCommand.Parameters.AddWithValue("@win", string.Empty)
    sqlCommand.Parameters.AddWithValue("@deu", string.Empty)
    sqlCommand.Parameters.AddWithValue("@los", string.Empty)
    sqlCommand.Parameters.AddWithValue("@f", string.Empty)
    sqlCommand.Parameters.AddWithValue("@a", string.Empty)
    sqlCommand.Parameters.AddWithValue("@dif", string.Empty)
    sqlCommand.Parameters.AddWithValue("@pts", string.Empty)

    For Each line in results
        Dim cells() = line.Split(ControlChars.Tab)
        sqlCommand.Parameters("@team").Value = cells(0)
        sqlCommand.Parameters("@played").Value = cells(1)
        sqlCommand.Parameters("@win").Value = cells(2)
        sqlCommand.Parameters("@deu").Value = cells(3)
        sqlCommand.Parameters("@los").Value = cells(4)
        sqlCommand.Parameters("@f").Value = cells(5)
        sqlCommand.Parameters("@a").Value = cells(6)
        sqlCommand.Parameters("@dif").Value = cells(7)
        sqlCommand.Parameters("@pts").Value = cells(8)
        sqlCommand.ExecuteNonQuery()
    Next
End Using

答案 1 :(得分:0)

看起来有点复杂,史蒂夫,虽然它可能比我理解的要多,但我使用了以下似乎工作得很好......

    myNewTable = myFolder + "League Table S" + mySession + ".xlsx"

    Dim oExcel As Object
    Dim oBook As Object
    Dim oRow As Int16 = 0

    oExcel = CreateObject("Excel.Application")
    oBook = oExcel.Workbooks.Add

    'Read input .txt file line-by-line, Copy to Clipboard & Paste to Excel

    Using rdr As New System.IO.StreamReader(myNewTableTemp)
        Do While rdr.Peek() >= 0
            Dim InputLine As String = rdr.ReadLine
            oRow = oRow + 1
            System.Windows.Forms.Clipboard.SetDataObject(InputLine)
            oBook.Worksheets(1).Range("A" + oRow.ToString).Select()
            oBook.Worksheets(1).Paste()
        Loop
        rdr.Close()
    End Using

    oBook.SaveAs(myNewTable)
    oBook = Nothing
    oExcel.Quit()
    oExcel = Nothing