可能是一个愚蠢的问题,在 VBA 中我会手动完成并创建一个宏,但我不知道如何在 VB.net 中做到这一点,如果有办法让我知道那就太好了!
无论如何,我想在 VB.net 中做的相当于手动选择整个 .TXT 文件并将其粘贴到 Excel 工作表的第一个单元格中......我可以做的文件处理,我只是不知道进行复制和粘贴的最佳方式。
例如,我想我可以读取整个 .TXT 文件并将其逐行写入剪贴板,然后将剪贴板粘贴到 Excel 文件中,但我想这是非常低效的!
可能是一个愚蠢的问题,在 VBA 中我会手动完成并创建一个宏,但我不知道如何在 VB.net 中做到这一点,如果有办法让我知道那就太好了!
无论如何,我想在 VB.net 中做的相当于手动选择整个 .TXT 文件并将其粘贴到 Excel 工作表的第一个单元格中......我可以做的文件处理,我只是不知道进行复制和粘贴的最佳方式。
例如,我想我可以读取整个 .TXT 文件并将其逐行写入剪贴板,然后将剪贴板粘贴到 Excel 文件中,但我想这是非常低效的!
假设您可以准备一个空的 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
史蒂夫,这似乎有点复杂,虽然它可能比我理解的要多,但我使用了以下似乎工作正常......
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