当前位置:编程学习 > C#/ASP.NET >>

vb.net 将Excel 2007表导入datatable时,为什么只能导入255列数据

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = ""
        Button1.Enabled = False
        Dim excelpath As String
        Dim CD1 As New System.Windows.Forms.OpenFileDialog()
        CD1.Title = "选择Excel文件"
        CD1.Filter = "(Excel)*.xlsx|*.xlsx|(Excel)*.xls|*.xls"
        Dim r As DialogResult = CD1.ShowDialog()    '''用户选项的返回结果
        'CD1.ShowDialog(Me)
        excelpath = CD1.FileName

        '''''下面这个搜索引擎只适用于Excel 2003及以下的版本
        'Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & excelpath & ";Extended Properties='Excel 8.0;HDR=no'" 
        ''''''07  Excel 还是发现只能导入255列 
        Dim strConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & excelpath & ";Extended Properties='Excel 8.0;HDR=yes'" '''这个适用于2007,改成12.0 xml效果是一样的
        Dim myda1 As OleDbDataAdapter
        Dim MyConnection As OleDbConnection
        Dim myds1 As DataSet
        MyConnection = New OleDbConnection(strConn)
        myda1 = New OleDbDataAdapter("select * from [sheet1$]", MyConnection)
        myds1 = New DataSet()
        'If CD1.ShowDialog() = System.Windows.Forms.DialogResult.Cancel Then   ''''这样做有一点小bug
        If r = System.Windows.Forms.DialogResult.Cancel Then
            MsgBox("您选择了取消!")
            Exit Sub
        Else
            myda1.Fill(myds1, "[sheet1$]")
            MyConnection.Close()
            DataGridView1.DataSource = myds1.Tables(0)   '''''''这里datagridview1只显示255列数据
        End If --------------------编程问答-------------------- bug,这是microsoft bug,避开它,没办法,我也碰到过 --------------------编程问答-------------------- 因为Excel最多只能有255列。。 --------------------编程问答-------------------- excel能容纳的最大行数和列数分别是:

行数:65536
列数:255

人家就是软件就是这么做的,没有办法! --------------------编程问答-------------------- 03 版本的好像 就这么多列。2010版本的,就多很多咯。 --------------------编程问答-------------------- Excel 2003最大行数是65536 列数是256 不错,可是我用的是Excel 2007
Excel 2007最大列数可以有65536 行数最大大概有100多万吧,我觉得是搜索Excel 2007数据引擎的原因
("select * from [sheet1$]", MyConnection),楼上的说避开,请教下如何避开,谢谢,datatable最大列数可以超过255列,所以也不是.net datatable和dataset的原因,知道的处理方法的说下,谢谢
--------------------编程问答--------------------
引用 5 楼 h361057123 的回复:
Excel 2003最大行数是65536 列数是256 不错,可是我用的是Excel 2007
Excel 2007最大列数可以有65536 行数最大大概有100多万吧,我觉得是搜索Excel 2007数据引擎的原因
("select * from [sheet1$]", MyConnection),楼上的说避开,请教下如何避开,谢谢,datatable最大列数可以超过255列,所以也不是.……

你的那个是新建Excel2007产生的文件,而不是用Excel2007打开的Excel2003的文件???? --------------------编程问答-------------------- 是的,我是新建的Excel 2007 里面的数据列数有300多列,结果发现datagridview只能显示到255列,监视datatable表的列数,也是显示255,不是用2007打开03的Excel --------------------编程问答--------------------
引用 3 楼 taomanman 的回复:
excel能容纳的最大行数和列数分别是:

行数:65536
列数:255

人家就是软件就是这么做的,没有办法!


+1 --------------------编程问答-------------------- 没有人回答吗???没有哪位大侠有解决办法? --------------------编程问答-------------------- 使用新的OFFICE组件,导入*.xlsx文件
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,