Visual Studio Express 2012 for Web. Windows Server 2008 R2. IIS 7.0.
I have code that creates an Excel workbook from the results of a SQL query and then offers to open or download the Excel file. This code works fine and creates the expected files when run in the VS debugger. However, when run on the deployed site, the file downloaded is either empty or just contains the header. Ahyone know why the code would work in debug but not on the deployed site? The code is below.
I have code that creates an Excel workbook from the results of a SQL query and then offers to open or download the Excel file. This code works fine and creates the expected files when run in the VS debugger. However, when run on the deployed site, the file downloaded is either empty or just contains the header. Ahyone know why the code would work in debug but not on the deployed site? The code is below.
'Libraries needed for the NPOI Excel worksheet creation
Imports NPOI.HSSF.UserModel
Imports NPOI.HSSF.UserModel.HSSFCellStyle
Imports NPOI.HPSF
Imports NPOI.HSSF.Util
Imports NPOI.POIFS.FileSystem
Private Sub DownloadMailMerge(Optional ByVal DType As String = "Group")
Dim strSQL As String = "", Success As Boolean, MyDataSet As DataSet, I, NLines, NCol As Integer
Dim SheetName As String, Row As HSSFRow, ShortFileName As String
'Create workbook
Dim xlWorkBook = New HSSFWorkbook()
On Error GoTo DMM_Err
SheetName = GroupDropDownList.SelectedItem.Text
'Create Sheets
Dim xlWorkSheet As HSSFSheet = xlWorkBook.CreateSheet(SheetName)
xlWorkSheet.CreateRow(0).CreateCell(0).SetCellValue("test")
With xlWorkSheet
If DType = "Group" Then
Row = xlWorkSheet.CreateRow(0)
Row.CreateCell(0).SetCellValue("Name")
Row.CreateCell(1).SetCellValue("Addressee")
Row.CreateCell(2).SetCellValue("Salutation")
Row.CreateCell(3).SetCellValue("AddressLine1")
Row.CreateCell(4).SetCellValue("AddressLine2")
Row.CreateCell(5).SetCellValue("City")
Row.CreateCell(6).SetCellValue("State")
Row.CreateCell(7).SetCellValue("Zip")
Row.CreateCell(8).SetCellValue("Region")
Row.CreateCell(9).SetCellValue("ChaplainSINGLE")
Row.CreateCell(10).SetCellValue("ChaplainsPLURAL")
Row.CreateCell(11).SetCellValue("StaffSINGLE")
Row.CreateCell(12).SetCellValue("StaffPLURAL")
Row.CreateCell(13).SetCellValue("Facility")
Row.CreateCell(14).SetCellValue("LastGiftDate")
Row.CreateCell(15).SetCellValue("LastGiftFundDescription")
'Row.CreateCell(16).SetCellValue("LastGiftAppealDescription")
NCol = 16
ElseIf DType = "Top" Then
Row = xlWorkSheet.CreateRow(0)
Row.CreateCell(0).SetCellValue("Name")
Row.CreateCell(1).SetCellValue("Addressee")
Row.CreateCell(2).SetCellValue("Salutation")
Row.CreateCell(3).SetCellValue("AddressLine1")
Row.CreateCell(4).SetCellValue("AddressLine2")
Row.CreateCell(5).SetCellValue("City")
Row.CreateCell(6).SetCellValue("State")
Row.CreateCell(7).SetCellValue("Zip")
Row.CreateCell(8).SetCellValue("Region")
Row.CreateCell(9).SetCellValue("ChaplainSINGLE")
Row.CreateCell(10).SetCellValue("ChaplainsPLURAL")
Row.CreateCell(11).SetCellValue("StaffSINGLE")
Row.CreateCell(12).SetCellValue("StaffPLURAL")
Row.CreateCell(13).SetCellValue("Facility")
Row.CreateCell(14).SetCellValue("Director")
NCol = 15
Else
End If
'wrap the address block
Dim WT As HSSFCellStyle = xlWorkBook.CreateCellStyle
WT.WrapText = True
xlWorkSheet.SetDefaultColumnStyle(0, WT)
End With
If DType = "Group" Then
'Build the query
Dim strDate, strAmount As String
'Build the WHERE clause for the date.
strDate = BuildDateString()
'Build WHERE clause for amounts for group.
strAmount = BuildAmountString()
'Combine the date and amount criteria into main SQL statement.
strSQL = GetMainSQL(strDate, strAmount)
ShortFileName = Replace(GroupDropDownList.SelectedItem.Text, " ", "") + ".xls"
ElseIf DType = "Top" Then
'strSQL = "SELECT Name,Addressee,Salutation,AddressLine1,AddressLine2,City,State,Zip,Region,Chaplain,Director,LastGiftFund FROM [!Extranet_Appeal_Top_Donor_v]" ' ORDER BY RECORDS_SEARCHNAME.KEY_NAME, RECORDS_SEARCHNAME.FIRST_NAME, RECORDS_SEARCHNAME.MIDDLE_NAME
strSQL = GetTopDonorSQL()
ShortFileName = "Top Donor.xls"
End If
Session("ALMMSelect") = strSQL
Dim Name, Addressee, Salutation, AddressLine1, AddressLine2, City, State, Zip, Region, Chaplain, Chaplains, Staff, Staffs, Director, Facility, LastGiftDate, LastGiftFund, LastGiftFundID, LastGiftAppeal As String
Dim strTmp As String = ""
Dim II, JJ As Integer
MyDataSet = Utilities.GetDataSet3(strSQL, Success)
If MyDataSet.Tables(0).Rows.Count > 0 Then
NLines = 0
For Each dr As DataRow In MyDataSet.Tables(0).Rows
Chaplain = "" : Chaplains = "" : Staff = "" : Staffs = ""
Name = IIf(IsDBNull(dr("Name")), "", dr("Name"))
Addressee = IIf(IsDBNull(dr("Addressee")), "", dr("Addressee"))
Salutation = IIf(IsDBNull(dr("Salutation")), "", dr("Salutation"))
AddressLine1 = IIf(IsDBNull(dr("AddressLine1")), "", dr("AddressLine1"))
AddressLine2 = IIf(IsDBNull(dr("AddressLine2")), "", dr("AddressLine2"))
City = IIf(IsDBNull(dr("City")), "", dr("City"))
State = IIf(IsDBNull(dr("State")), "", dr("State"))
Zip = IIf(IsDBNull(dr("Zip")), "", dr("Zip"))
Region = IIf(IsDBNull(dr("Region")), "", dr("Region"))
LastGiftFund = IIf(IsDBNull(dr("LastGiftFund")), "", dr("LastGiftFund"))
LastGiftFundID = IIf(IsDBNull(dr("LastGiftFundID")), "", dr("LastGiftFundID"))
strTmp = ChaplainDict(LastGiftFundID)
If InStr(strTmp, "Chaplains") > 0 Or InStr(strTmp, " chaplains ") > 0 Then
Chaplains = strTmp
ElseIf InStr(strTmp, "Chaplain") > 0 Then
Chaplain = strTmp
ElseIf InStr(strTmp, " and ") > 0 Then
Staffs = strTmp
Else
Staff = strTmp
End If
Facility = FacilityDict(LastGiftFundID)
If DType = "Group" Then
'LastGiftAppeal = IIf(IsDBNull(dr("LastGiftAppeal")), "", dr("LastGiftAppeal"))
LastGiftDate = IIf(IsDBNull(dr("LastGiftDate")), "", dr("LastGiftDate"))
ElseIf DType = "Top" Then
Director = IIf(IsDBNull(dr("Director")), "", dr("Director"))
End If
'Do Not process benevolence fund gifts
If InStr(LCase(LastGiftFundID), "0098Ben") = 0 And InStr(LCase(LastGiftFundID), "0098PHitch") = 0 Then
NLines = NLines + 1
With xlWorkSheet
Row = xlWorkSheet.CreateRow(NLines)
Row.CreateCell(0).SetCellValue(Name)
'Adjust row height for number of lines in address block
'Row.HeightInPoints = 14 * NAddressLines
Row.CreateCell(1).SetCellValue(Addressee)
Row.CreateCell(2).SetCellValue(Salutation)
Row.CreateCell(3).SetCellValue(AddressLine1)
Row.CreateCell(4).SetCellValue(AddressLine2)
Row.CreateCell(5).SetCellValue(City)
Row.CreateCell(6).SetCellValue(State)
Row.CreateCell(7).SetCellValue(Zip)
Row.CreateCell(8).SetCellValue(Region)
Row.CreateCell(9).SetCellValue(Chaplain)
Row.CreateCell(10).SetCellValue(Chaplains)
Row.CreateCell(11).SetCellValue(Staff)
Row.CreateCell(12).SetCellValue(Staffs)
Row.CreateCell(13).SetCellValue(Facility)
If DType = "Group" Then
Row.CreateCell(14).SetCellValue(LastGiftDate)
Row.CreateCell(15).SetCellValue(LastGiftFund)
Row.CreateCell(16).SetCellValue(LastGiftFundID)
'Row.CreateCell(17).SetCellValue(LastGiftAppeal)
ElseIf DType = "Top" Then
Row.CreateCell(14).SetCellValue(Director)
End If
End With
Else
'Beep()
End If
Next
'Format the columns to fit (autosize)
For I = 0 To NCol - 1
'xlWorkSheet.SetColumnWidth(I, 20 * 256)
xlWorkSheet.AutoSizeColumn(I)
Next
'Create XLS file in memory
Dim file As New MemoryStream()
xlWorkBook.Write(file)
'Stream file to browser
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", String.Format("attachment;filename={0}", ShortFileName))
Response.Clear()
Response.BinaryWrite(file.GetBuffer())
Response.End()
End If
DMM_Exit:
Exit Sub
DMM_Err:
Resume Next
End Sub