可能是一个愚蠢的问题,在VBA中,我会手动完成这个问题。创建一个宏,但我不知道如何在VB.net中做到这一点,如果有办法让我知道这将是伟大的!
无论如何,我想在VB.net中做的相当于手动选择整个.TXT文件&将它粘贴到Excel工作表的第一个单元格中...我可以做的文件处理,我只是不知道最好的方法去复制&糊。
例如,我想我可以阅读整个.TXT文件&将它逐行写入剪贴板&然后将剪贴板粘贴到Excel文件中,但我想这样效率很低!!!
答案 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