0

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

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

例如,我想我可以读取整个 .TXT 文件并将其逐行写入剪贴板,然后将剪贴板粘贴到 Excel 文件中,但我想这是非常低效的!

4

2 回答 2

0

假设您可以准备一个空的 Excel 文件,其中只有一个名为“LEAGUE”的工作表。
在此工作表中,您在第一行中定义了以下值(每个值对应于每个单元格)

TEAMNAME PL WDLFA 差异点

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

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
于 2013-02-23T12:53:44.863 回答
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
于 2013-02-25T09:46:11.547 回答