vb.net обобщенная запись данных в Excel - PullRequest
1 голос
/ 14 марта 2011

Мне нужно создать файл Excel с нуля в VB.NET, используя DataTable от asp.net.Я могу сделать это для конкретного файла, но я не знаю, как это сделать для общей базы данных.То есть, где я использую «CREATE TABLE ...», я не знаю, как сказать ему, какие типы использовать для данных в таблице.

DataTable является производным от базы данных FoxPro.(Я не знаю, имеет ли это значение.)

Я вызываю таблицу, подобную следующей:

<%
return_value =  make_excel( sql_table, excel_filename)
%>

make_excel определяется как

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

    ' buncha other stuff defined in here.

    Public Shared Function make_excel(ByVal sqlTable As DataTable, ByVal xls_fn As String) As Boolean
        Dim conn As System.Data.OleDb.OleDbConnection
        Dim ds As System.Data.DataSet
        Dim cmd As New System.Data.OleDb.OleDbCommand()

        conn = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & xls_fn & "';Extended Properties=Excel 8.0;")
        conn.Open()

        cmd.Connection = conn
        cmd.CommandText = "CREATE TABLE MyTable ( Admin  char(20), first_name char(20));"
        cmd.ExecuteNonQuery()

        cmd.CommandText = "INSERT INTO MyTable ( Admin, first_name ) VALUES ('true', 'Bob')"
        cmd.ExecuteNonQuery()

        conn.Close()

        Return True
    End Function

End Class

Что янужно иметь возможность выполнить это через значения в sqlTable выше, проверить их тип и затем собрать sql для их записи.Указатели

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Вы изучили функцию copyfromrecordset? Вам нужно будет немного поработать и немного изменить подход, но это может быть то, на что вы можете посмотреть. Статья для MS доступна здесь (Извините, статья основана на VBA, но она должна помочь в качестве руководства).

0 голосов
/ 17 марта 2011

У меня есть решение проблемы.Я не доволен этим как общим решением, но оно работает достаточно хорошо для случаев, с которыми я сейчас имею дело.

В этом решении я создаю шаблон файла excel с заголовками столбцов.Я хочу использовать.Когда я делаю выбор в коде пересылки, я изменяю имя полей соответствующим образом (или удаляю те поля, которые мне не нужны).

Открытая общая функция TestXL (ByVal или As HttpResponse, ByVal sqlTable AsDataTable, ByVal xls_template_fn в виде строки, ByVal xls_fn в виде строки) в качестве логического значения Dim conn в качестве System.Data.OleDb.OleDbConnection Dim ds в качестве System.Data.DataSet Dim cmd в качестве нового System.Data.OleDb.OleDbCommand ()

1005*

End Function

Обратите внимание, что имя рабочего листа - это имя таблицы для вызова oledb.

Есть ссылка на другие способы сделать это:

http://blogs.msdn.com/b/erikaehrli/archive/2009/01/30/how-to-export-data-to-excel-from-an-asp-net-application-avoid-the-file-format-differ-prompt.aspx

Если мне придется вернуться к этой проблеме, я, вероятно, начну там.

...