C# 导入Excel多表情况下,获取表名且返回DataSet类型

本文介绍了一个使用C#从Excel文件中读取数据并将其填充到多个DataTable的方法。首先检查是否选择了文件,然后通过OLE DB连接读取Excel内容,并获取所有工作表的信息。每个工作表的数据被填充到不同的DataTable中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

protected void btnImport_ServerClick(object sender, EventArgs e)
    {
        if (this.accessaryExcel.Files.Count == 0)
        {
            this.Master.ShowAlertMsg(MyMsg.ShowMyMessage("未能获取到导入文件,请重新上传。"));
            return;
        }
        string strFileName = this.accessaryExcel.Files[0].PhysicsFileName;
        string strCon = String.Format(CGeneral.GetSysConfig("ExcelConnectionString"), strFileName);
        string strCmdText = "SELECT * FROM [{0}]";
        OleDbConnection conn = new OleDbConnection(strCon);
        OleDbDataAdapter da = new OleDbDataAdapter();
        DataSet dsData = new DataSet();

        conn.Open();
        //tbSchema存储该Execl中所有Sheet的名称 等信息(无具体内容)
        DataTable tbSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
        foreach (DataRow rowList in tbSchema.Rows)
        {
            string strTBName = rowList["TABLE_NAME"].ToString();
            da.SelectCommand = new OleDbCommand(String.Format(strCmdText, strTBName), conn);
            da.Fill(dsData, strTBName);
        }
        if (conn.State == ConnectionState.Open)
        {
            conn.Close();
        }
        da.Dispose();
        conn.Dispose();

        DataTable dtEmployeeData = new DataTable();
        dtEmployeeData = dsData.Tables[0];

        DataTable dtEmployeeEducationData = new DataTable();
        dtEmployeeEducationData = dsData.Tables[1];

        DataTable dtEmployeeFamilyData = new DataTable();
        dtEmployeeFamilyData = dsData.Tables[2];

        DataTable dtEmployeeJCData = new DataTable();
        dtEmployeeJCData = dsData.Tables[3];

        DataTable dtEmployeeProfessionData = new DataTable();
        dtEmployeeProfessionData = dsData.Tables[4];

        DataTable dtEmployeeWorkData = new DataTable();
        dtEmployeeWorkData = dsData.Tables[5];

        DataTable dtPersonnelChangeData = new DataTable();
        dtPersonnelChangeData = dsData.Tables[6];
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值