ASP.NETではExcelの内容を読み取り、Web上に表示

1480 ワード

この例ではASPについて述べる.NETは、Excelのコンテンツを読み取り、Web上に表示する方法を実現し、非常に実用的な機能です.具体的な実現方法は以下の通りである.
イベントコードをクリックします.csコードは以下の通りです.

protected void Button1_Click(object sender, EventArgs e)
{
    string strPath = "d:/test.xls";
    string mystring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = '" + strPath + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
      //"Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '" + strPath + "';Extended Properties=Excel 8.0";
    OleDbConnection cnnxls = new OleDbConnection(mystring);
    OleDbDataAdapter myDa = new OleDbDataAdapter("select * from [Sheet1$]", cnnxls);
    DataSet myDs = new DataSet();
    myDa.Fill(myDs);
    DataGrid1.DataSource = myDs.Tables[0];
    DataGrid1.DataBind(); 
}


注意:
クラシックな「Provider=Microsoft.Jet.OLEDB.4.0;Data Source='」+strPath+';Extended Properties=Excel 8.0」を使用すると、外部テーブルが予想されるフォーマットではないとエラーが表示されます.
これはMicrosoftのためです.Jet.OLEDB.4.0はMicrosoftJetエンジンで、2003バージョン(2003以前はテストしていないので、どのバージョンに下向きに適応できるか分からない)に適しているが、2007年にはマイクロソフトが傘下のAccessとExcelの主要ファイルフォーマットを変更し、名前を変更した.accdb(Access 2007データベースファイル)と.xlsx(Excel 2007ファイル)は、Microsoft Jetエンジンにはサポートされていないが、マイクロソフトもすぐにMicrosoft Office 2007 Desktop Drivers:Data Connectivity Componentsをサポートすることを提案した.
したがって、解決策は、接続文字列中のデータプロバイダをMicrosoftに変更することである.ACE.OLEDB.12.0でいいです.