【问题标题】:Import Excel Data into GridView将 Excel 数据导入 GridView
【发布时间】:2015-06-16 07:38:51
【问题描述】:

以下是我成功将数据从 Excel 导入到 GridView 的代码。

问题是我有两个专栏时间和描述。当我导入到 GridView 某些描述数据未完全导入到 GridView 时,某些文本丢失了。方法 在 Excel 中

小时说明 1 abcdefghijklmnopqrstuuudddd

在网格视图中

小时说明 1 abcdefghijklmno

文本很大,大约 64 个单词,包括所有字符,也像 2

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication49.WebForm1" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Read and Display Data From an Excel File (.xsl or .xlsx) in ASP.NET</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<b>Please Select Excel File: </b>
<asp:FileUpload ID="fileuploadExcel" runat="server" />&nbsp;&nbsp;
<asp:Button ID="btnImport" runat="server" Text="Import Data" OnClick="btnImport_Click" />
<br />
<asp:Label ID="lblMessage" runat="server" Visible="False" Font-Bold="True" ForeColor="#009933"></asp:Label><br />
<asp:GridView ID="grvExcelData" runat="server">
<HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
</asp:GridView>
</div>
</form>
</body>
</html>

VB.Net 代码

Imports System.Data
Imports System.Data.OleDb
Imports System.IO

Partial Class WebForm1
Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    End Sub

    Protected Sub btnImport_Click(ByVal sender As Object, ByVal e As EventArgs)
        Dim connString As String = ""
        Dim strFileType As String = ".xls"
        Dim path__1 As String = "c:\ccc.xls"
        'Connection String to Excel Workbook

        If strFileType.Trim() = ".xls" Then
            connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path__1 & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=2"""
        ElseIf strFileType.Trim() = ".xlsx" Then
            connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path__1 & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=2"""
        End If

        Dim query As String = "SELECT [Hours (hr)],[Description] FROM [sheet1$]"
        Dim conn As New OleDbConnection(connString)

        If conn.State = ConnectionState.Closed Then
            conn.Open()
        End If

        Dim cmd As New OleDbCommand(query, conn)
        Dim da As New OleDbDataAdapter(cmd)
        Dim ds As New DataSet()

        da.Fill(ds)
        grvExcelData.DataSource = ds.Tables(0)
        grvExcelData.DataBind()
        da.Dispose()
        conn.Close()
        conn.Dispose()
    End Sub
End Class

【问题讨论】:

  • 这些值是否都属于同一类型?例如,如果 ado 检测到一列是数字而不是找到的字符串,它不会导入这些行。
  • 亲爱的,所有的行都被导入了,但有些行没有被导入。因为描述列有这种类型的数据(从 4.5" 到 2 7/8")?请帮忙。
  • 我确实解释得很糟糕。它全部导入,但如果没有相同的数据类型,它将为 NULL。如果你有一列 (2,3,4,4/5",5) 它将导入 (2,3,4,NULL,5) ,因为他检测到该列是数字的,但是 4 /5" 它不会成功。
  • 亲爱的,描述列从字符串值开始,它本身就像处理工具从 2 7/8' 到 3 7/8"" 这种类型的数据。请帮忙。
  • 我不确定,因为通常我有相反的问题,但我认为该列也必须是 omogeneus。尝试选择列并将格式设置为字符串...

标签: .net vb.net excel gridview


【解决方案1】:

所以我写了一些东西。这段代码是针对 Postgres 的(如果你可以选择,这将是一个非常好的选择。否则,以 Firebird 为例,它也是一个非常好的数据库,但你应该将 in insert 指令拆分为很多“insert into”

 Imports ADODB
Public Class ExcelToPostgres
Implements XToY


Dim cn As ADODB.Connection
Dim o As OleDb.OleDbConnection
Dim _Serials As ArrayList
Private _Txt As New System.Text.StringBuilder("")
Private _ForeignsTxt As New System.Text.StringBuilder("")
Private _Q As Boolean 'Quote all
Private p_Database As New ArrayList
Private P_Definition As Boolean = True
Private P_Data As Boolean = True
Private h_TAbles As SortedList(Of String, DBTable)
Private Quoter As New DbQuoter(dbEnum.ePostgres)

Public Property SetTables(ByVal Name As String) As Boolean Implements XToY.SetTables
    Get
        Return (h_TAbles(Name).IsSelected)

    End Get
    Set(ByVal value As Boolean)
        h_TAbles(Name).IsSelected = value
    End Set
End Property
Public Property UseQuotes As Boolean Implements XToY.UseQuotes
    Get
        Return _Q
    End Get
    Set(ByVal value As Boolean)
        _Q = value
    End Set
End Property

Public ReadOnly Property Tables() As SortedList(Of String, DBTable) Implements XToY.Tables

    Get
        Return h_TAbles

    End Get

End Property
Public Property Definition As Boolean Implements XToY.Definition
    Set(ByVal value As Boolean)
        P_Definition = value
    End Set
    Get
        Return P_Definition
    End Get
End Property
Public Property Data As Boolean Implements XToY.Data
    Set(ByVal value As Boolean)
        P_Data = value
    End Set
    Get
        Return P_Data
    End Get
End Property
Sub New(ByVal dbpath As String, ByVal user As String, ByVal password As String)
    Dim strCn As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & dbpath & ";Extended Properties=Excel 8.0"
    ';Extended Properties=Excel 8.0;HDR=Yes;IMEX=1
    o = New OleDb.OleDbConnection(strCn)

    o.Open()

    LoadTables()

End Sub
    Private Sub LoadTables()
    Dim dt As DataTable
    Dim ch() As Char = {"'", Chr(34), " "}

    dt = o.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, Nothing)


    h_TAbles = New SortedList(Of String, DBTable)
    Dim dbt As DBTable
    For Each row As DataRow In dt.Rows
        Dim tablename As String = DirectCast(row("TABLE_NAME"), String)


        If tablename.Trim(ch).EndsWith("$") Then
            dbt = New DBTable()
            dbt.Name = tablename
            dbt.DBTarget = "Postgres"
            dbt.IsSelected = True

            h_TAbles.Add(tablename, dbt)
        End If
    Next



    LoadColumns()

End Sub
Private Sub LoadColumns()
    Dim dt As DataTable
    Dim dv As DataView
    Dim c As ColumnTable
    For Each d As KeyValuePair(Of String, DBTable) In h_TAbles
        dt = o.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Columns, New String() {Nothing, Nothing, d.Key, Nothing})

        dv = dt.DefaultView
        dv.Sort = "ORDINAL_POSITION"

        For i As Integer = 0 To dv.Count - 1
            c = New ColumnTable
            c.Name = dv.Item(i).Item("COLUMN_NAME")
            c.NewName = QuoteName(dv.Item(i).Item("COLUMN_NAME"))
            c.Type = Me.TypeAsString(dv.Item(i).Item("DATA_TYPE"), c.IsAutoincrement)
            Select Case dv.Item(i).Item("DATA_TYPE")
                Case 7, 8, 200, 201, 202, 203, 129, 130, 72, 129, 130, 32770
                    c.NeedQuote = True
                    c.NeedQuoteUserSetting = True
            End Select
            c.IsAutoincrement = False
            c.IsNullable = True
            c.IsSelected = True

            d.Value.Columns.Add(c)
        Next
    Next

End Sub

Public Function Export() As String Implements XToY.Export

    _Txt = New System.Text.StringBuilder("")
    For Each a As KeyValuePair(Of String, DBTable) In h_TAbles

        If a.Value.IsSelected Then
            Me.CreateTables(a.Key)
            _Txt.Append(vbNewLine)
        End If

    Next
    '   _Txt.Append(_ForeignsTxt.ToString)
    Return _Txt.ToString

End Function

Private Sub CreateTables(ByVal Table As String)

    Dim sTable As String = QuoteName(Table)

    If Definition Then
        _Txt.Append(String.Format("DO $$DECLARE r record; {0}" & _
                "BEGIN {0}" & _
                "    FOR r IN SELECT conname, c.relname as tTab {0}" & _
                "  FROM pg_constraint ct {0}" & _
                "  inner join pg_class c on c.oid= ct.conrelid {0}" & _
                "  inner join pg_class c1 on c1.oid= ct.confrelid {0}" & _
                "  where contype='f' AND c1.relname ='{1}' {0}" & _
                "    LOOP {0}" & _
                "        EXECUTE 'ALTER TABLE ' || quote_ident(r.ttab) || ' DROP CONSTRAINT ' || quote_ident(r.conname); {0}" & _
                "    END LOOP; {0}" & _
                "END$$; {0}", vbNewLine, sTable))

        _Txt.Append("DROP TABLE IF EXISTS ")
        _Txt.Append(sTable)
        _Txt.Append(";")
        _Txt.Append(vbNewLine)
        _Txt.Append("CREATE TABLE IF NOT EXISTS ")
        _Txt.Append(sTable)
        _Txt.Append(" (")

        CreateColumns(Table)

        'CreateConstraints(Table)
        '_Txt.Append(vbNewLine)

        _Txt.Append("); ")
        _Txt.Append(vbNewLine)
        _Txt.Append(vbNewLine)
    End If
    If Data Then
        _Serials = New ArrayList
        Me.DataPump(Table)
        _Txt.Append(vbNewLine)
        For i = 0 To Me._Serials.Count - 1
            _Txt.Append("Select setval(pg_get_serial_sequence('")
            _Txt.Append(sTable)
            _Txt.Append("','")
            '_Txt.Append(Chr(34))
            _Txt.Append(_Serials(i))
            '_Txt.Append(Chr(34))
            _Txt.Append("'), (Select max(")

            _Txt.Append(QuoteName(_Serials(i)))
            _Txt.Append(") from ")
            _Txt.Append(sTable)

            _Txt.Append(")); ")
            _Txt.Append(vbNewLine)
        Next


    End If
End Sub
Private Sub CreateColumns(ByVal idTable As String)

    Dim b As Boolean = False

    With h_TAbles(idTable)
        For i As Integer = 0 To .Columns.Count - 1
            With CType(.Columns(i), ColumnTable)
                If .IsSelected Then
                    If b Then
                        _Txt.Append(",")
                    Else
                        b = True
                    End If
                    _Txt.Append(vbNewLine)
                    _Txt.Append(.NewName)
                    _Txt.Append(" ")
                    If .IsAutoincrement Then
                        _Serials.Add(.NewName)

                    Else
                        _Txt.Append(.Type)
                    End If


                    _Txt.Append(" ")
                    If .DefaultValue <> "" Then
                        _Txt.Append(" DEFAULT ")
                        _Txt.Append(.DefaultValue)
                    End If

                    If Not .IsNullable Then _Txt.Append(" NOT NULL")



                End If

            End With
        Next
    End With


End Sub


Private Function TypeAsString(ByVal InternalId As Integer, ByVal isautoincrement As Boolean) As String
    Select Case InternalId
        Case 2, 16, 17, 18

            Return " smallint "
        Case 3, 19
            If isautoincrement Then Return " Serial "
            Return " int "
        Case 4
            Return " real "
        Case 5
            Return " double precision "
        Case 6
            Return " Money "
        Case 7
            Return " timestamp "
        Case 8, 200, 201, 202, 203
            Return " text "
        Case 11
            Return " boolean "
        Case 72
            Return " uuid "
        Case 128
            Return " bytea "
        Case 129, 130
            Return " text "
        Case 131
            Return " numeric "
        Case 32769, 20, 21
            If isautoincrement Then Return " bigserial "

            Return " BIGINT "
        Case 32771
            Return " BLOB "
        Case 32770
            Return " TEXT "
        Case Else
            Throw New InvalidConstraintException("Type ID=" & InternalId & " Not Recognized")
    End Select
End Function
Private Sub CreateConstraints(ByVal idTable As String)

    Dim rsTbl, rsPk As Recordset
    rsTbl = cn.OpenSchema(SchemaEnum.adSchemaTableConstraints, _
                          New Object() {Nothing, Nothing, Nothing, Nothing, Nothing, idTable, Nothing})
    rsPk = cn.OpenSchema(SchemaEnum.adSchemaPrimaryKeys, New Object() {Nothing, Nothing, idTable})
    Dim i As Integer
    _Txt.Append(vbNewLine)
    If Not rsPk.EOF Then 'primary key
        _Txt.Append(",")
        _Txt.Append(vbNewLine)

        _Txt.Append("CONSTRAINT ")
        rsTbl.Filter = "CONSTRAINT_TYPE='PRIMARY KEY'"
        _Txt.Append(Chr(34))
        _Txt.Append(idTable)
        _Txt.Append("_")
        _Txt.Append(rsTbl.Fields("CONSTRAINT_NAME").Value)
        _Txt.Append(Chr(34))
        _Txt.Append(" PRIMARY KEY(")
        i = 1
        rsPk.Filter = "ORDINAL=" & i
        Do Until rsPk.EOF
            If i > 1 Then _Txt.Append(",")

            _Txt.Append(QuoteName(rsPk.Fields("COLUMN_NAME").Value))
            i = i + 1
            rsPk.Filter = "ORDINAL=" & i

        Loop
        _Txt.Append(")")
    End If
    rsPk.Close()
    _Txt.Append(vbNewLine)


End Sub



Private Sub DataPump(ByVal idTable As String)

    Dim dt As DataTable
    'Dim dv As DataView
    Dim hsh As New Hashtable
    dt = o.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Columns, New String() {Nothing, Nothing, idTable, Nothing})
    For k As Integer = 0 To dt.Rows.Count - 1
        hsh.Add(dt.Rows(k).Item("COLUMN_NAME"), dt.Rows(k).Item("DATA_TYPE"))
    Next


    'Dim ch() As Char = {"'", " ", Chr(34)}
    'Dim ch2() As Char = {Chr(34)}
    Dim st As String = idTable  '.Trim(ch)
    If Left(st, 1) = Chr(34) Then st = Mid(st, 2, Len(st) - 2)
    If st.EndsWith("$") Then st = Left(st, Len(st) - 1)

    Dim sTable As String = QuoteName(st)
    Dim tbl As DBTable
    Dim i As Integer
    Dim b As Boolean = False
    Dim qryString As New System.Text.StringBuilder("")

    tbl = h_TAbles(idTable)

    If tbl.IsQuery Then
        qryString.Append(tbl.QueryString)
    Else
        qryString.Append("SELECT ")

        For i = 0 To tbl.Columns.Count - 1
            If tbl.Columns(i).IsSelected Then
                If b Then qryString.Append(",")
                qryString.Append("[")
                'If Left(tbl.Columns(i).Name, 1) = Chr(34) Then
                '    qryString.Append(Mid(tbl.Columns(i).Name, 2, Len(tbl.Columns(i).Name) - 2))
                'Else
                qryString.Append(tbl.Columns(i).Name)
                'End If

                qryString.Append("]")
                b = True
            End If
        Next
        qryString.Append(" FROM ")
        qryString.Append("[")
        qryString.Append(idTable)
        qryString.Append("]")
    End If


    'Dim oComm As New OleDb.OleDbCommand("Select * From [" & idTable & "]", o)
    Dim oDat As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(qryString.ToString, o)
    dt = New DataTable
    oDat.Fill(dt)

    Dim InsertString As New System.Text.StringBuilder("INSERT INTO ")
    InsertString.Append(sTable)
    InsertString.Append("(")
    b = False

    For i = 0 To tbl.Columns.Count - 1
        If tbl.Columns(i).IsSelected Then
            If b Then InsertString.Append(",")
            InsertString.Append(tbl.Columns(i).NewName)
            b = True
        End If
    Next
    InsertString.Append(") VALUES ")

    Dim ci As New System.Globalization.CultureInfo("en-US")
    System.Threading.Thread.CurrentThread.CurrentCulture = ci
    Dim h As Boolean
    Dim clmName As String
    b = False
    _Txt.Append(InsertString.ToString)
    For i = 0 To dt.Rows.Count - 1
        If b Then
            _Txt.Append(",")
        Else
            b = True
        End If

        _Txt.Append(vbNewLine)
        _Txt.Append("(")
        h = False
        For j As Integer = 0 To tbl.Columns.Count - 1
            If tbl.Columns(j).IsSelected Then
                If h Then
                    _Txt.Append(", ")
                Else
                    h = True
                End If


                clmName = tbl.Columns(j).Name '.Trim(ch)

                If TypeOf (dt.Rows(i).Item(clmName)) Is DBNull Then
                    _Txt.Append("NULL")
                ElseIf tbl.Columns(j).NeedQuote <> tbl.Columns(j).NeedQuoteUserSetting Or Not hsh.Contains(clmName) Then

                    _Txt.Append(Me.PrepareCustomString(dt.Rows(i).Item(clmName), tbl.Columns(j).Type, tbl.Columns(j).NeedQuoteUserSetting))
                Else
                    _Txt.Append(Me.PrepareDataString(dt.Rows(i).Item(clmName), hsh.Item(clmName)))
                End If
            End If


        Next
        _Txt.Append(")")

    Next

    _Txt.Append(";")


End Sub
Private Function PrepareCustomString(ByVal Dr As String, Type As String, NeedQuote As Boolean) As String
    Dim Typetxt As New System.Text.StringBuilder
    Select Case Type
        Case "DATETIME", "TIMESTAMP"
            Typetxt.Append(" to_timestamp('")
            Typetxt.Append(CType(Dr, DateTime).ToString("dd-MM-yyy hh:mm:ss"))
            Typetxt.Append("','dd-MM-yyy hh24:mi:ss')")
        Case "DATE"
            Typetxt.Append(" to_timestamp('")

            Typetxt.Append(CType(Dr, DateTime).ToString("dd-MM-yyy"))
            Typetxt.Append("','dd-MM-yyy')")


        Case "TIME"
            Typetxt.Append(" to_timestamp(('")

            Typetxt.Append(CType(Dr, DateTime).ToString("hh:mm:ss"))
            Typetxt.Append("','hh24:mi:ss')")
        Case "YEAR"
            Typetxt.Append(" to_timestamp('")

            Typetxt.Append(CType(Dr, DateTime).ToString("yyyy"))
            Typetxt.Append("','yyyy')")
        Case Else
            If NeedQuote Then
                Typetxt.Append("'")
                Dim s As String = Dr
                For i As Integer = 0 To s.Length - 1
                    Typetxt.Append(s(i))
                    If s(i) = "'" Then Typetxt.Append("'")
                Next
                Typetxt.Append("'")
            Else
                Typetxt.Append(Dr.Replace(",", "."))
            End If
    End Select
    Return Typetxt.ToString
End Function

Private Function NeedGrave(ByVal IDType As Integer) As String
    Select Case IDType
        Case 8, 200, 201, 202, 203, 129, 130, 32770, 7, 11
            Return "'"
        Case Else
            Return ""

    End Select
End Function
Private Function PrepareDataString(ByVal Dr As Object, ByVal dt As ADODB.DataTypeEnum) As String



    'DataType Enum      |Value  |Access                             |SQLServer                  |Oracle    
    '--------------------------------------------------------------------------------------------------------
    'adBigInt           |20     |                                   |BigInt                     |          
    'adBinary           |128    |                                   |Binary                     |Raw *     
    '                   |       |                                   |TimeStamp                  |          
    'adBoolean          |11     |YesNo                              |Bit                        |          
    'adChar             |129    |                                   |Char                       |Char      
    'adCurrency         |6      |Currency                           |Money                      |          
    '                   |       |                                   |SmallMoney                 |          
    'adDate             |7      |Date                               |DateTime                   |          
    'adDBTimeStamp      |135    |DateTime                           |DateTime                   |Date      
    '                   |       |                                   |SmallDateTime              |          
    'adDecimal          |14     |                                   |                           |Decimal * 
    'adDouble           |5      |Double                             |Float                      |Float     
    'adGUID             |72     |ReplicationID                      |UniqueIdentifier           |          
    'adIDispatch        |9      |                                   |                           |          
    'adInteger          |3      |AutoNumber                         |Identity                   |Int *     
    '                   |       |Integer                            |Int                        |          
    '                   |       |Long                               |                           |          
    'adLongVarBinary    |205    |OLEObject                          |Image                      |Long Raw *
    '                   |       |                                   |                           |Blob      
    'adLongVarChar      |201    |Memo                               |Text                       |Long *    
    '                   |       |Hyperlink                          |                           |Clob      
    'adLongVarWChar     |203    |Memo                               |NText (SQL Server 7.0 +)   |NClob     
    '                   |       |Hyperlink                          |                           |          
    'adNumeric          |131    |Decimal                            |Decimal                    |Decimal   
    '                   |       |                                   |Numeric                    |Integer   
    '                   |       |                                   |                           |Number    
    '                   |       |                                   |                           |SmallInt  
    'adSingle           |4      |Single                             |Real                       |          
    'adSmallInt         |2      |Integer                            |SmallInt                   |          
    'adUnsignedTinyInt  |17     |Byte                               |TinyInt                    |          
    'adVarBinary        |204    |ReplicationID                      |VarBinary                  |          
    'adVarChar          |200    |Text                               |VarChar                    |VarChar   
    'adVariant          |12     |                                   |Sql_Variant                |VarChar2  
    'adVarWChar         |202    |Text                               |NVarChar                   |NVarChar2 
    'adWChar            |130    |                                   |NChar                      |      
    Dim DataString As New System.Text.StringBuilder("")
    Select Case dt
        Case 0
            DataString.Append("NULL")
        Case 2, 3, 16, 17, 18 'int,small end big 
            DataString.Append(Dr)
        Case 4, 5, 6, 131 'float,double
            DataString.Append(Dr.ToString.Replace(",", "."))
        Case 7 'datetime
            DataString.Append("to_timestamp('")

            DataString.Append(CType(Dr, DateTime).ToString("dd-MM-yyy hh:mm:ss"))
            DataString.Append("','dd-MM-yyy hh24:mi:ss')")
        Case 8, 200, 201, 202, 203, 129, 130, 32770 'varchar
            DataString.Append("'")
            Dim s As String = Dr
            For i As Integer = 0 To s.Length - 1
                DataString.Append(s(i))
                If s(i) = "'" Then DataString.Append("'")
            Next
            DataString.Append("'")

        Case 72 'guid
            DataString.Append(Dr)
        Case 11 'bit
            DataString.Append("'")
            If Dr = "0" Then
                DataString.Append("False")
            ElseIf Dr = "-1" Then
                DataString.Append("True")
            Else
                DataString.Append(Dr)
            End If

            DataString.Append("'")
        Case 32768 'uniqueidentifier it should never come here
            DataString.Append(Dr)
        Case 32771 'blob
            DataString.Append(Dr)
        Case 128
            DataString.Append("decode('")

            DataString.Append(Convert.ToBase64String(Dr))
            DataString.Append("','base64')")

        Case Else
            Throw New InvalidConstraintException("Type ID=" & dt & " Not Recognized")
    End Select
    Return DataString.ToString
End Function



Public ReadOnly Property Databases As ArrayList Implements XToY.Databases
    Get
        Return Me.p_Database
    End Get
End Property
Public Property Database As String Implements XToY.Database

    Get
        Return ""
    End Get
    Set(val As String)

    End Set
End Property
Public Sub AddQueries(qryName As String, qryDefinition As String) Implements XToY.AddQueries
    Dim odr As New OleDb.OleDbDataAdapter(qryDefinition, o)
    Dim tbl As New DBTable
    tbl.Name = qryName
    tbl.IsQuery = True
    tbl.QueryString = qryDefinition
    tbl.DBTarget = "Postgres"
    odr.Fill(tbl.Datatable)
    tbl.TranslateToTable()

    For i As Integer = 0 To tbl.Columns.Count - 1

        tbl.Columns(i).NewName = QuoteName(tbl.Columns(i).Name)
    Next

    odr.Dispose()

    h_TAbles.Add(qryName, tbl)
End Sub
Public Property Schema As String Implements XToY.Schema
    Get
        Return ""
    End Get
    Set(value As String)

    End Set
End Property
Public ReadOnly Property schemas As ArrayList Implements XToY.Schemas
    Get
        Dim i As New ArrayList
        Return i
    End Get
End Property
Private Function QuoteName(ByVal st As String) As String
    Dim cha() As Char = {"'", Chr(34), " ", "$", "`"}
    st = st.Trim(cha)
    st = st.Replace("/", "_").Replace("\", "_").Replace(".", "_")
    Return Quoter.QuoteNamePG(st, UseQuotes)
End Function
Private Function EscapeName(ByVal st As String) As String
    Dim s As New System.Text.StringBuilder

    Dim cha() As Char = {"'", Chr(34), " ", "$", "`"}

    st = st.Trim(cha)
    st = st.Replace("/", "_").Replace("\", "_").Replace(".", "_")
    For i As Integer = 0 To st.Length - 1
        s.Append(st(i))
        If st(i) = "'" Then s.Append("'")
    Next
    Return s.ToString
End Function
 End Class

IT 来自程序,因此请忽略工具。有两个访问点 New,它们打开连接并加载表的模式。另一个是创建 SQL 指令的 Execute()。拿走你需要的……

【讨论】:

  • 亲爱的,我在将数据从 excel 导入到网格视图时,在一列中仅占用 255 个字符。如何增加该尺寸。请帮忙。
  • 我不明白你在想什么。 Access 和我认为也很出色,因为长字符串使用另一种数据类型。备忘录。获取 Excel 的架构(按照上面的常规 LoadColumns() 的步骤并填充数据网格)查看所需列的类型并与我的代码中的表进行比较。如果是文本,则不需要备忘录,我真的不知道如何设置它,特别是如果可能的话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多