aspx / aspx.vb无法写入IIS服务器上的Excel文件

时间:2017-11-09 21:13:00

标签: asp.net iis

我们正在运行一个内部网,并拥有从表单收集数据的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

谢谢! 布莱尔

0 个答案:

没有答案