0

MOSS 2007 共有ドキュメント リストに保存されている Excel ファイルをプログラムで開く必要があります。ファイルの内容を DataTable として返すことができるように、OleDbConnection を使用したいと思います。Web 上の多くの記事がこれが可能であることを暗示しているので、私はこれが可能であると信じています。現在、新しい接続を初期化しようとすると、コードが失敗します (oledbConn = new OleDbConnection(_connStringName); エラー メッセージは次のとおりです。

初期化文字列の形式が、インデックス 0 から始まる仕様に準拠していません。

ファイルへの正しいパスを把握できないだけだと思います。これが私のコードです:

        public DataTable GetData(string fileName, string workSheetName, string filePath)
    {   
// filePath == C:\inetpub\wwwroot\wss\VirtualDirectories\80\MySpWebAppName\Shared Documents\FY12_FHP_SPREADSHEET.xlsx
            // Initialize global vars
        _connStringName = DataSource.Conn_Excel(fileName, filePath).ToString();
        _workSheetName = workSheetName;
        dt = new DataTable();
        //Create the connection object
        if (!string.IsNullOrEmpty(_connStringName))
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                oledbConn = new OleDbConnection(_connStringName);

                try
                {

                    oledbConn.Open();
                    //Create OleDbCommand obj and select data from worksheet GrandTotals
                    OleDbCommand cmd = new OleDbCommand("SELECT * FROM " + _workSheetName + ";", oledbConn);

                    //create new OleDbDataAdapter
                    OleDbDataAdapter oleda = new OleDbDataAdapter();
                    oleda.SelectCommand = cmd;
                    oleda.Fill(dt);
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }
                finally
                {
                    oledbConn.Close();
                }
            });
        }
        return dt;
    }

        public static OleDbConnection Conn_Excel(string ExcelFileName, string filePath)
    {
// filePath == C:\inetpub\wwwroot\wss\VirtualDirectories\80\MySpWebAppName\Shared Documents\FY12_FHP_SPREADSHEET.xlsx
OleDbConnection myConn = new OleDbConnection();
        myConn.ConnectionString = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=Excel 12.0");
        return myConn;
    }

何が間違っているのですか、または Excel ファイルの内容を DataTable として取得するより良い方法はありますか?

4

1 に答える 1

0

オープン ソース プロジェクトのExcel Data Readerを使用することになりました

于 2012-04-16T22:13:11.300 に答える