zoukankan      html  css  js  c++  java
  • olede读excel

    注意点:需要比较excel文件中是否有重复列时,需要设置HDR=No,IMEX=1,即把第一列当做数据读取,不然读到的datatable列名会被自动加数字后缀。

            /// < summary>    
            /// 根据excel的文件的路径提取其中sheet表名称   
            /// /// < /summary>   
            /// /// < param name="Path">Excel文件的路径< /param>  
            private void GetDataFromExcelWithAppointSheetName(string Path)
            {
                try
                {
                    //strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
    
                    //备注: "HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反。
                    //"IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。
                    //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)                
                    strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + Path + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
    
                    conn = new OleDbConnection(strConn);
                    conn.Open();
                    //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等    
                    DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
                    //包含excel中表名的字符串数组  
                    string[] strTableNames = new string[dtSheetName.Rows.Count];
                    for (int k = 0; k < dtSheetName.Rows.Count; k++)
                    {
                        strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
                    }
                    
                    cmbSheets.DataSource = null;
                    cmbSheets.Items.Clear();
                    cmbSheets.DataSource = strTableNames;
                    if (strTableNames.Length == 0)
                    {
                        cmbSheets.DataSource = null;
                        cmbSheets.Items.Add(" ");
                    }
                }
                catch(Exception ex)
                {
                    CommControl.MessageBoxEx.MessageBoxEx.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
           
                }
    
            }
     private void btnRead_Click(object sender, EventArgs e)
            {
                if (strConn == "" || cmbSheets.Text.Trim()=="") return;
                OleDbDataAdapter myCommand = null;
                DataTable dt = new DataTable();
                //从指定的表明查询数据,可先把所有表明列出来供用户选择  
                string strExcel = "select * from [" + cmbSheets.Text + "]";
                myCommand = new OleDbDataAdapter(strExcel, strConn);
                dt = new DataTable();
                myCommand.Fill(dt);
                //绑定到界面
                dgvList.DataSource = dt; 
                //LoadData(dt);
                tslState.Text = "" + dgvList.Rows.Count.ToString() + "条记录";
            }

    参见:

    http://blog.csdn.net/hxy870/article/details/8618510

  • 相关阅读:
    SharePoint 2013 安装.NET Framework 3.5 报错
    SharePoint 2016 配置工作流环境
    SharePoint 2016 站点注册工作流服务报错
    Work Management Service application in SharePoint 2016
    SharePoint 2016 安装 Cumulative Update for Service Bus 1.0 (KB2799752)报错
    SharePoint 2016 工作流报错“没有适用于此应用程序的地址”
    SharePoint 2016 工作流报错“未安装应用程序管理共享服务代理”
    SharePoint JavaScript API in application pages
    SharePoint 2016 每天预热脚本介绍
    SharePoint 无法删除搜索服务应用程序
  • 原文地址:https://www.cnblogs.com/xiaochun126/p/5027936.html
Copyright © 2011-2022 走看看