Я конвертирую кучу приложений FOXPRO / FOXWEB в ASP.NET.
Базовая БД по-прежнему остается foxpro (на данный момент).
Я передаю таблицу в некоторый код VB.NET, который я хочу преобразовать в файл CSV и отправить обратно клиенту для загрузки. И это работает! Вроде ... Это работает иногда, но в других случаях, вместо того, чтобы спрашивать меня, хочу ли я загрузить файл CSV, он просто выбрасывает файл в окно браузера.
Со стороны asp я передаю объект ответа, таблицу и имя файла csv.
<%
Dim xls_fn As String = "test01.csv"
'OLEDB call to fill up 'tbl' ... this works.
sendTableAsCSVtoClient(response, tbl, xls_fn)
%>
В файле clsCommon.vb у меня есть следующий код:
Option Explicit On
'Option Strict On
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.Page
Imports System.IO
Imports Microsoft.VisualBasic
Imports System.Diagnostics
Imports System.Data
Imports System.Data.OleDb
Public Class clsCommon
Inherits Page
Public Shared Function enq(ByVal str As String) As String
Dim dq As String
dq = """"
Return dq & str & dq
End Function
' some other functions and subs defined in here ... blah blah blah
' ...
Public Shared Function sendTableAsCSVtoClient(ByVal resp As HttpResponse, ByVal sqlTable As DataTable, ByVal xls_fn As String) As Boolean
Dim r As DataRow
Dim c As DataColumn
Dim sep As String = ","
Dim FileExtension As String
Dim lcFileNameONLY As String
Dim i As Integer
Dim dq As String = """"
FileExtension = UCase(Path.GetExtension(xls_fn))
lcFileNameONLY = UCase(Path.GetFileNameWithoutExtension(xls_fn))
resp.Clear()
resp.ClearContent()
resp.ClearHeaders()
resp.ContentType = "application/vnd.ms-excel"
resp.AddHeader("Content-Disposition", "inline; filename=" & lcFileNameONLY & ".csv")
For Each c In sqlTable.Columns
resp.Write(UCase(c.ColumnName) & sep)
Next
resp.Write(vbCrLf)
For Each r In sqlTable.Rows
For i = 0 To sqlTable.Columns.Count - 1
resp.Write(enq(r(i)) & sep)
Next
resp.Write(vbCrLf)
Next
resp.End()
Return True
End Function
End Class
- Что вызывает это?
- Как мне обойти это?
Полагаю, не имеет значения, что источником данных является таблица.
Обратите внимание, что файл создается на лету и никогда не существует в файловой системе сервера.
ТХ,
ПТФ