0

我需要以编程方式打开存储在 MOSS 2007 共享文档列表中的 Excel 文件。我想使用 OleDbConnection 以便可以将文件的内容作为 DataTable 返回。我相信这是可能的,因为网络上的许多文章都暗示这是可能的。目前我的代码在尝试初始化新连接时失败(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 回答