使用vb.net读取Excel文件并查找第一个空单元格
我必须创建一个桌面应用程序。 我使用Visual studio 2015和Excel 我必须: -打开excel文件 -找到第一个空行 -在该行中写入新数据 -保存该文件(目前我只能创建一个新文件。我不知道如何更新和保存打开的文件) 在我打开文件之前它一直工作。。 非常感谢。 这是我编写的用于打开文件的函数:使用vb.net读取Excel文件并查找第一个空单元格,excel,vb.net,Excel,Vb.net,我必须创建一个桌面应用程序。 我使用Visual studio 2015和Excel 我必须: -打开excel文件 -找到第一个空行 -在该行中写入新数据 -保存该文件(目前我只能创建一个新文件。我不知道如何更新和保存打开的文件) 在我打开文件之前它一直工作。。 非常感谢。 这是我编写的用于打开文件的函数: Public Function OpenExcel(filename As String) As Object Dim retval As Object = Nothing
Public Function OpenExcel(filename As String) As Object
Dim retval As Object = Nothing
Try
Dim excel As Microsoft.Office.Interop.Excel.Application
Dim wb As Microsoft.Office.Interop.Excel.Workbook
Dim ws As Microsoft.Office.Interop.Excel.Worksheet
excel = New Microsoft.Office.Interop.Excel.Application
wb = excel.Workbooks.Open(filename)
excel.Visible = False
wb.Activate()
ws = wb.Worksheets.Item(1)
ws = excel.ActiveSheet
retval = ws.Cells(1, 1).value
Catch ex As exception
End Try
End Function
这是我代码的第一部分
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim dialogo As OpenFileDialog
dialogo = New OpenFileDialog()
dialogo.ShowDialog()
Dim ds As Object = f.OpenExcel(dialogo.FileName)
Dim oExcel As Object
oExcel = CreateObject("Excel.Application")
Dim oBook As Object
Dim oSheet1 As Object
oBook = oExcel.Workbooks.Add()
oSheet1 = oBook.Worksheets(1)
oBook = oExcel.ActiveWorkbook
Dim UR As Integer = 0
UR = oSheet1.Range("A" & oSheet1.Rows.Count).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row
For rr = 1 To UR
If oSheet1.Range("A" & rr).Value = ("") Then
oSheet1.Range("A" & rr).value = "text1"
Else
MsgBox("box pieno")
End If
Next rr
oExcel.DisplayAlerts = False
oBook.SaveAs("C:\Users\an\Desktop\New" & ".xlsx")
oBook.Close()
oBook = Nothing
你差点就成功了
你的函数已经打开了文件;只需将其更改为返回工作簿
Public Function OpenExcel(ByVal filename As String) As Object
Dim excel As Microsoft.Office.Interop.Excel.Application
Dim wb As Microsoft.Office.Interop.Excel.Workbook
excel = New Microsoft.Office.Interop.Excel.Application
excel.Visible = False
wb = excel.Workbooks.Open(filename, ReadOnly:=False)
excel.Visible = False
Return wb
End Function
(顺便说一句,在这里处理异常并不是一个好主意,除非您返回“状态”值或默认文件。让调用方处理异常)
…然后更改其余代码并保存已打开的书本
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim dialogo As OpenFileDialog
dialogo = New OpenFileDialog()
dialogo.ShowDialog()
Dim oBook As Microsoft.Office.Interop.Excel.Workbook
Dim oSheet1 As Object
Try
oBook = OpenExcel(dialogo.FileName)
Catch ex As Exception
'handle your exception here
Exit Sub
End Try
oSheet1 = oBook.Worksheets(1)
Dim UR As Integer = 0
UR = oSheet1.Range("A" & oSheet1.Rows.Count).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row
For rr = 1 To UR
If oSheet1.Range("A" & rr).Value Is Nothing OrElse oSheet1.Range("A" & rr).Value.ToString() = ("") Then
oSheet1.Range("A" & rr).value = "text1"
End If
Next rr
Dim excel = oBook.Application
oBook.Save()
oBook.Close()
excel.Quit() 'This is important: as your application is not visible, it would stay on memory until reboot or shutdown if you don't close it here
oBook = Nothing
End Sub
你差点就成功了
你的函数已经打开了文件;只需将其更改为返回工作簿
Public Function OpenExcel(ByVal filename As String) As Object
Dim excel As Microsoft.Office.Interop.Excel.Application
Dim wb As Microsoft.Office.Interop.Excel.Workbook
excel = New Microsoft.Office.Interop.Excel.Application
excel.Visible = False
wb = excel.Workbooks.Open(filename, ReadOnly:=False)
excel.Visible = False
Return wb
End Function
(顺便说一句,在这里处理异常并不是一个好主意,除非您返回“状态”值或默认文件。让调用方处理异常)
…然后更改其余代码并保存已打开的书本
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim dialogo As OpenFileDialog
dialogo = New OpenFileDialog()
dialogo.ShowDialog()
Dim oBook As Microsoft.Office.Interop.Excel.Workbook
Dim oSheet1 As Object
Try
oBook = OpenExcel(dialogo.FileName)
Catch ex As Exception
'handle your exception here
Exit Sub
End Try
oSheet1 = oBook.Worksheets(1)
Dim UR As Integer = 0
UR = oSheet1.Range("A" & oSheet1.Rows.Count).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row
For rr = 1 To UR
If oSheet1.Range("A" & rr).Value Is Nothing OrElse oSheet1.Range("A" & rr).Value.ToString() = ("") Then
oSheet1.Range("A" & rr).value = "text1"
End If
Next rr
Dim excel = oBook.Application
oBook.Save()
oBook.Close()
excel.Quit() 'This is important: as your application is not visible, it would stay on memory until reboot or shutdown if you don't close it here
oBook = Nothing
End Sub
多谢各位。它可以工作,我可以在下一个单元格中写字。 但有一个问题: 在我选择文件之前,如果我检查电脑中打开的后台进程,我没有任何Excel。 我选择要打开的文件,然后 -窗户堵住了 -在后台进程中,将显示excel 现在,如果我关闭进程,然后再次按下打开按钮,它就会工作。
我不明白发生了什么谢谢。它可以工作,我可以在下一个单元格中写字。 但有一个问题: 在我选择文件之前,如果我检查电脑中打开的后台进程,我没有任何Excel。 我选择要打开的文件,然后 -窗户堵住了 -在后台进程中,将显示excel 现在,如果我关闭进程,然后再次按下打开按钮,它就会工作。
我不明白发生了什么谢谢。它可以工作,我可以在下一个单元格中写字。但有一个问题:在我选择文件之前,如果我检查电脑中打开的后台进程,我没有任何Excel。我选择了我想要打开的文件,窗口本身被阻塞了,在后台进程中,如果我关闭进程并再次按下打开按钮,excel现在就会出现。我不明白发生了什么事谢谢你。它可以工作,我可以在下一个单元格中写字。但有一个问题:在我选择文件之前,如果我检查电脑中打开的后台进程,我没有任何Excel。我选择了我想要打开的文件,窗口本身被阻塞了,在后台进程中,如果我关闭进程并再次按下打开按钮,excel现在就会出现。我不明白发生了什么