0

我已经搜索了很长时间,但我找不到我做错了什么。

我有一个上传电子表格的网络应用程序(已验证它有效),并且应该解析电子表格并填充 GridView。看起来很简单,但它不会显示数据。

我正在测试的电子表格(作为上传;上传按预期工作)是一个简单的单选项卡电子表格,其中包含所有无聊的香草......三列,列名和一行数据(总共两行填充,注定要一旦这件事起作用,就会扩大)。选项卡名称CRPRListOleDbDataAdapter下面使用。

我在页面上没有收到任何错误,只是没有填充 GridView。

这是 ASP.net 中的 GridView:

<asp:GridView ID="TopicsTbl" runat="server" 
     AllowSorting="False" 
     AllowPaging="False" 
     AutoGenerateColumns="False">
     <Columns>
         <asp:BoundField HeaderText="CR" DataField="CR" />
         <asp:BoundField HeaderText="PR" DataField="PR" />
         <asp:BoundField HeaderText="Summary" DataField="Summary" />
     </Columns>
</asp:GridView>

我已经把它归结为以下代码。我的意思是我已经测试了一切。没有错误,事情似乎按预期工作......除了 GridView 不会填充:

    OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [CRPRList$]", XLSConnect);
    DataSet ds = new DataSet();

    adapter.Fill(ds, "CRPRList");

    DataTable data = ds.Tables["CRPRList"];
    TopicsTbl.DataSource = data;

XLSConnect字符串将取决于文件是 xls 还是 xlsx:

   string strConn;
    if (fileType.ToLower() == "xls" || fileType.ToLower() == "xlsx") {
        strConn = (fileType == "xlsx") ? string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0\"", filePath) : string.Format("Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0\"", filePath);

        XLSConnect = new OleDbConnection(strConn);
        return true;
    } else return false; //throw new Exception("file extension is not registering");

我错过了什么?还是我做错了什么?

我猜我的 GridView 设置不正确,或者我的电子表格解析理解不完整......不过可能还有一段路要走!

谢谢

4

2 回答 2

0

你可以试试像 Jimmy 这样简单的东西

using (var data = new OleDbDataAdapter("SELECT * FROM [CRPRList$]", XLSConnect))
{
    var table = new DataTable();
    data.Fill(table);
    TopicsTbl.DataSource = data;
    TopicsTbl.DataBind();
};
于 2013-03-12T21:07:56.733 回答
0

您必须绑定数据:

DataTable data = ds.Tables[0];
TopicsTbl.DataSource = data;
TopicsTbl.DataBind();
于 2013-03-12T21:11:34.943 回答