我知道這個問題有十幾個答案和帖子,但沒有任何適用於我的作品。'Microsoft.ace.oledb.12.0'不從服務器上的.xlsx文件讀取所有行(IIS7)
我們有我的MVC4應用程序,我將它部署到IIS7到我的服務器和一臺機器,我們沒有安裝Visual Studio。
我們正在做進口/出口數據從/到excel進行批量輸入。
我們確實在Office 2007的.xlsx格式的一張工作表中有20000左右的數據(文件保存爲Excel工作簿)。
現在,當我通過使用下面的代碼讀取數據時,它只讀取4000-5000行左右的數據。
這整個下面的代碼在我的本地機器在那裏我做的代碼和讀取所有20000點的數據從「的Excel 97-2003工作簿以.xls」 但與「Excel工作簿正與的.xlsx工作正常」。
private void FillDataSet(HttpPostedFileBase file, DataSet ds)
{
using (
var con =
new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" File Path";Extended Properties=Excel 12.0"))
{
con.Open();
var dtSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
var strSheetName = "";
strSheetName = dtSchema.Rows[0]["TABLE_NAME"].ToString();
var cmd = new OleDbCommand();
var da = new OleDbDataAdapter();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM [" + strSheetName + "]";
da = new OleDbDataAdapter(cmd);
da.Fill(ds);
}
}
我已經經歷了下面的步驟和解決方案,但它不適合我。
- 安裝Microsoft Access數據庫引擎2010可再發行組件。
-Installing 2007 Office系統驅動程序:數據連接組件
我們搞不清爲什麼它的工作我的本地機器上,而不是工作的服務器。
請對這個問題..
提供任何想法或解決方案我曾嘗試: - 從解決方案資源管理器中右鍵單擊您的項目,然後單擊屬性。 - 單擊生成選項卡 - 將平臺目標更改爲:任何CPU至x86 |任何CPU到x64 - 重新構建您的解決方案 - 也使用啓用32位應用程序的高級設置中的IIS更改爲True/False。
- 也嘗試了此鏈接的所有連接字符串。 https://www.connectionstrings.com/ace-oledb-12-0/
感謝Tanay更新.. 但這也沒有解決我的問題。 我已經通過此鏈接給出的連接stirngs,但無論如何它不是整個20000記錄 它只是讀取4000-5000記錄只有.xlsx格式 https://www.connectionstrings.com/ace-oledb -12-0/ –
這是不對的。 IMEX = 1意味着提供者將混合colums作爲文本對待,而不是將它視爲文本。令人遺憾的是,提供商仍然會掃描前8行,並對列中的數據類型做出決定。如果沒有IMEX = 1,那麼它將返回Null,表示沒有評估到所處理數據類型的所有內容。這不是一個問題,如果它評估它們爲文本,但如果它認爲它們是數字,那麼你會在文本單元中得到空值。在這種情況下,IMEX = 1將返回列的前8個單元格中混合數據類型的列的文本。 –