将 Excel 工作表转换为多个 C# 数据表

本文关键字:数据表 转换 Excel 工作 | 更新日期: 2023-09-27 18:30:24

我正在尝试将 excel 电子表格导入到数据表数组中。 每个表格都是电子表格中的一个工作表。 现在我看到每个表都包含所有工作表中的信息。 我认为这部分无法正常工作。

dataSet.Clear();

如果你能看到我做错了什么,请告诉我。

这是代码的其余部分。

        public DataTable[] ReadDoc()
        {
        string filename = @"C:'Documents and Settings'user'Desktop'Test.xlsx";
        DataTable dt = null;
        string connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='"Excel 8.0;HDR=YES'";", filename);
        OleDbConnection connection = new OleDbConnection(connectionString);
        DataSet dataSet = new DataSet();
        DataSet finalDataSet = new DataSet();
        DataTable[] table = new DataTable[3];
        connection.Open();
        dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        if (dt == null)
        {
            return null;
        }
        String[] excelSheets = new String[dt.Rows.Count];
        int i = 0;
        foreach (DataRow row in dt.Rows)
        {
            excelSheets[i] = row["TABLE_NAME"].ToString();
            i++;
        }
        // Loop through all of the sheets if you want too...
        for (int j = 0; j < excelSheets.Length; j++)
        {
            string query = String.Format("SELECT * FROM [" + excelSheets[j] + "]");
            dataSet.Clear();
            OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString);
            dataAdapter.Fill(dataSet);
            table[j] = dataSet.Tables[0];
        }
        return table;
        }

感谢您的帮助。

将 Excel 工作表转换为多个 C# 数据表

这里的问题是你的数据集,被声明为outsife for。每个数据表数组项都获取相同的信息。 数据集表[0];您必须在 for 内声明。每次迭代存储不同的信息。

 for (int j = 0; j < excelSheets.Length; j++)
    {
        DataSet dataSet = new DataSet();
        string query = String.Format("SELECT * FROM [" + excelSheets[j] + "]");
        .....
    }