OLEDB IMEX行数限制的问题
今天碰到一個問題需要想EXCEL表中寫數(shù)據(jù),折騰了好久才發(fā)現(xiàn)是IMEX惹得禍,所以記錄下提醒自己,也希望大家不要出同樣的錯。
碰到問題:使用語句 "insert into [Sheet1$] (大類) values ('test')" 無法插入 。
原因:Provider=Microsoft.Jet.OLEDB.4.0;Data Source='2008-08.xls'; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'
解決方法: 去掉IMEX=1
補充:
向EXCEL插入數(shù)據(jù)時 數(shù)據(jù)類型是由前8行數(shù)據(jù)中數(shù)據(jù)類型占優(yōu)選擇?? 例如:分數(shù)一列前前8行為空值 插入5為字符串格式,如果前8行為數(shù)字
格式? 插入5為數(shù)字格式關于IMEX的資料:
IMEX是用來告訴驅(qū)動程序使用Excel文件的模式,其值有0、1、2三種,分別代表導出、導入、混合模式。當我們設置IMEX=1時將強制混合
數(shù)據(jù)轉(zhuǎn)換為文本,但僅僅這種設置并不可靠,IMEX=1只確保在某列前8行數(shù)據(jù)至少有一個是文本項的時候才起作用,它只是把查找前8行數(shù)
據(jù)中數(shù)據(jù)類型占優(yōu)選擇的行為作了略微的改變。例如某列前8行數(shù)據(jù)全為純數(shù)字,那么它仍然以數(shù)字類型作為該列的數(shù)據(jù)類型,隨后行里的
含有文本的數(shù)據(jù)仍然變空。 另一個改進的措施是IMEX=1與注冊表值TypeGuessRows配合使用,TypeGuessRows 值決定了ISAM 驅(qū)動程序從前幾條數(shù)據(jù)采樣確定數(shù)據(jù)
類型,默認為“8”。可以通過修改“HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/4.0/Engines/Excel”下的該注冊表值來更改采樣行數(shù)
。但是這種改進還是沒有根本上解決問題,即使我們把IMEX設為“1”, TypeGuessRows設得再大,例如1000,假設數(shù)據(jù)表有1001行,某列
前1000行全為純數(shù)字,該列的第1001行又是一個文本,ISAM驅(qū)動的這種機制還是讓這列的數(shù)據(jù)變成空。
總結(jié)
以上是生活随笔為你收集整理的OLEDB IMEX行数限制的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学前教育考研什么专业(学前教育专业考研的
- 下一篇: 印度承认英国女王吗