0

私は長い間検索してきましたが、私が間違っていることを見つけることができません。

スプレッドシートをアップロードする (動作確認済み) Web アプリがあり、スプレッドシートを解析して GridView に入力することになっています。簡単そうに見えますが、データは表示されません。

私がテストしているスプレッドシート (アップロードとして; アップロードは期待どおりに動作します) は、単純な単一タブのスプレッドシートで、すべてが退屈なバニラです... 1 行のデータを持つ列名を持つ 3 つの列 (合計 2 つの入力された行、これが機能すると拡張されます)。タブ名は以下でCRPRList使用されOleDbDataAdapterます。

ページにエラーは表示されません。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

データをバインドする必要があります。

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

このジミーのような簡単なことを試すことができます

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 に答える