我们正在运行一个内部网,并拥有从表单收集数据的aspx / aspx.vb应用程序,将其发送到电子邮件任务并将其添加到Excel文件中。通常它工作正常。
我们在过去发现在Excel中打开Excel文件会导致应用程序无法写入Excel文件。解决方案是将Excel文件复制到本地PC并在那里打开它。似乎由于某种原因,服务器必须拥有"拥有"该文件,有人从Excel打开它会破坏该所有权。
Excel文件将定期填满(97格式/ 65535可用行),我们需要用空白副本替换该文件。这种情况每隔几年发生一次为此,必须对IIS服务器执行某些操作,以便应用程序可以写入该文件。过去这样做的IT人员不再在这里,我们无法弄清楚他在需要时做了什么。我们尝试在刷新文件之前停止服务器,然后启动服务器,但这似乎有任何影响。 Web应用程序无法写入文件。它似乎从用户角度起作用,但文件中没有任何内容。
关于我们需要做什么的任何想法,我们都没有做到?或者也许为什么服务器需要拥有"该文件是为了写入它?
代码看起来很简单:
Protected Sub btnLogExpedite_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLogExpedite.Click
'Log info
'<add name="ExcelConnection" connectionString="Provider=Microsoft.Jet.Oledb.4.0;Data Source=|DataDirectory|\SchoolMgt.xls;Extended Properties=Excel 8.0"/>
Try
LogExpedite(Server.MapPath("../expediting/ExpeditingLog.xls"))
Catch ex As Exception
Dim objEventLog As New EventLog()
objEventLog.Source = "Application"
objEventLog.WriteEntry("Expediting Web App: " & ex.ToString, EventLogEntryType.Error, 1000)
objEventLog = Nothing
End Try
和
Private Sub LogExpedite(ByVal sFile As String)
Try
Dim sDate As Date = Now()
Dim sSQLInsert = "INSERT INTO [Sheet1$](Material,MRPCtlr,MMPPStatus,ReferenceNumber,Quantity,ConfirmedDate,TargetDate,Reason,AdditionalInfo,LoggedBy,DateLogged,TimeLogged) " & _
"VALUES ('" & EscapeChar(txtMaterialToExpedite.Text) & "','" & EscapeChar(hidMRPCtlr.Value) & "','" & EscapeChar(hidMMPPStatus.Value) & "','" & EscapeChar(txtReferenceNumber.Text) & "','" & EscapeChar(txtQuantity.Text) & "','" & _
EscapeChar(txtConfirmedDate.Text) & "','" & EscapeChar(txtTargetDate.Text) & "','" & EscapeChar(ddlReasonForExpedite.SelectedValue) & "','" & EscapeChar(txtAdditionalInformation.Text) & "','" & Mid(Request.ServerVariables("LOGON_USER"), 5) & "','" & _
DatePart(DateInterval.Month, sDate) & "/" & DatePart(DateInterval.Day, sDate) & "/" & DatePart(DateInterval.Year, sDate) & "','" & DatePart(DateInterval.Hour, sDate) & ":" & DatePart(DateInterval.Minute, sDate) & ":" & DatePart(DateInterval.Second, sDate) & "')"
Dim cnExcel As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sFile & ";Extended Properties=Excel 8.0;")
cnExcel.Open()
Dim cmExcel As New System.Data.OleDb.OleDbCommand(sSQLInsert, cnExcel)
cmExcel.ExecuteNonQuery()
cnExcel.Close()
cnExcel = Nothing
cmExcel = Nothing
谢谢! 布莱尔