Asp.net 使用FileUpload有条件地上载Excel电子表格
下面是我的Vb代码,它获取excel文件的行数。但是,如果行数大于10k行,我想抛出一个异常并给出一条错误消息。我怎么能做到呢?我已经做了关于获取行计数的研究,但不确定如何抛出异常。下面是一个ASP.Net Windows窗体应用程序Asp.net 使用FileUpload有条件地上载Excel电子表格,asp.net,vb.net,Asp.net,Vb.net,下面是我的Vb代码,它获取excel文件的行数。但是,如果行数大于10k行,我想抛出一个异常并给出一条错误消息。我怎么能做到呢?我已经做了关于获取行计数的研究,但不确定如何抛出异常。下面是一个ASP.Net Windows窗体应用程序 Dim xls As New Excel.Application Dim sheet As Excel.Worksheet Dim filePath As String = Path.Combine(GlobalVa
Dim xls As New Excel.Application
Dim sheet As Excel.Worksheet
Dim filePath As String = Path.Combine(GlobalVariable.savedPath, GlobalVariable.excelFileName)
xls.Workbooks.Open(filePath)
sheet = xls.ActiveWorkbook.Sheets(1)
Dim maxSize As Integer = 2
Dim row As Integer = 1
Do Until sheet.Cells(row, 1).value Is Nothing
row += 1
Loop
MsgBox("last Row is " & row - 1)
xls.Workbooks.Close()
xls.Quit()
releaseObject(sheet)
releaseObject(xls)
您已经在计算行数,因此可以修改循环,使其仅在行数小于10000时继续
Dim row As Integer = 1
Do
row += 1
Loop while sheet.Cells(row, 1).value IsNot Nothing AndAlso row <= 10000
更新以反映OP问题更新:
我不知道我是否建议在行达到10000时抛出一个异常来处理。相反,我希望这样做:
Private Sub BtnUpload_OnClick(sender As Object, e As EventArgs) Handles BtnUplaod.Click
REM Save SpreadSheet
Dim filePath As String = Path.Combine(GlobalVariable.savedPath, GlobalVariable.excelFileName)
myfileUploader.saveAs(filePath)
REM Open SpreadSheet
Dim xls As New Excel.Application
Dim sheet As Excel.Worksheet
xls.Workbooks.Open(filePath)
sheet = xls.ActiveWorkbook.Sheets(1)
Dim maxSize As Integer = 2
REM Loop through spreadsheet and count rows
Dim row As Integer = 1
Do
row += 1
Loop While sheet.Cells(row, 1).value IsNot Nothing AndAlso row <= 10000 'Exit loop when end of SpreadSheet is reached or if rows exceeds 10,000
REM Release Resources
xls.Workbooks.Close()
xls.Quit()
releaseObject(sheet)
releaseObject(xls)
REM Decide whether to accept upload, or reject and show error
If row >= 10000 Then 'If row > 10000 delete file and show error
REM Delete the file
File.Delete(filePath)
REM Show some sort of error to user - Its up to you how you want to do so. That is a seperate question
MsgBox("Your Error")
REM Else SpreadSheet is valid
Else
'Your Code code doing what you want with spreadsheet goes here
MsgBox("last Row is " & row - 1)
End If
End Sub
Private子BtnUpload\u OnClick(发送者作为对象,e作为事件参数)处理BtnUpload。单击
REM保存电子表格
Dim filePath为String=Path.Combine(GlobalVariable.savedPath,GlobalVariable.excelFileName)
myfileUploader.saveAs(文件路径)
REM开放式电子表格
Dim xls作为新的Excel.Application
将工作表设置为Excel。工作表
xls.Workbooks.Open(文件路径)
sheet=xls.ActiveWorkbook.Sheets(1)
Dim maxSize为整数=2
REM在电子表格中循环并计算行数
将行设置为整数=1
做
行+=1
在sheet.Cells(第1行)中循环。值不是空,并且第10000行删除文件并显示错误
REM删除该文件
File.Delete(文件路径)
REM向用户显示某种类型的错误-这取决于您希望如何执行。这是另一个问题
MsgBox(“您的错误”)
REM Else电子表格有效
其他的
'您的代码可以在这里对电子表格执行您想要的操作
MsgBox(“最后一行是”&行-1)
如果结束
端接头
此代码将在用户单击网页上名为BtnUpload的按钮时运行。你可以把它放在任何你喜欢的地方
我想这就是你想要的。是否正确?我如何处理此异常,以便用户单击“确定”并重试?在中出现类型为“system.exception”的异常,但未在用户代码中处理。抛出新异常(“我的异常消息”)只需在输入消息时抛出一个新异常…然后您必须正确处理它以执行所需操作。要回答如何允许用户重试,我需要了解有关您的程序的更多信息。是Asp.Net还是windows窗体?如果是ASP,是WinForms、MVC还是AngularJS?请更新您的问题,以便在您的问题中提供更多信息。我的错。您必须先释放资源,然后才能尝试删除该文件。我更新了答案。我很高兴……很高兴programming@slugster谢谢你的编辑。
Private Sub BtnUpload_OnClick(sender As Object, e As EventArgs) Handles BtnUplaod.Click
REM Save SpreadSheet
Dim filePath As String = Path.Combine(GlobalVariable.savedPath, GlobalVariable.excelFileName)
myfileUploader.saveAs(filePath)
REM Open SpreadSheet
Dim xls As New Excel.Application
Dim sheet As Excel.Worksheet
xls.Workbooks.Open(filePath)
sheet = xls.ActiveWorkbook.Sheets(1)
Dim maxSize As Integer = 2
REM Loop through spreadsheet and count rows
Dim row As Integer = 1
Do
row += 1
Loop While sheet.Cells(row, 1).value IsNot Nothing AndAlso row <= 10000 'Exit loop when end of SpreadSheet is reached or if rows exceeds 10,000
REM Release Resources
xls.Workbooks.Close()
xls.Quit()
releaseObject(sheet)
releaseObject(xls)
REM Decide whether to accept upload, or reject and show error
If row >= 10000 Then 'If row > 10000 delete file and show error
REM Delete the file
File.Delete(filePath)
REM Show some sort of error to user - Its up to you how you want to do so. That is a seperate question
MsgBox("Your Error")
REM Else SpreadSheet is valid
Else
'Your Code code doing what you want with spreadsheet goes here
MsgBox("last Row is " & row - 1)
End If
End Sub