2012-09-15 41 views
1

在Excel式酒吧插入我得到不想要的字符'這限制了場類型,如日期,以特定的格式OLEDB Excel中插入不想要的字符(')

query="INSERT INTO [book$] ([Book Name]) VALUES ('" + txtbookname.Text +"')"; 

此值是字符串類型的插入件

後轉換後

例如:如果我在excel單元中插入了I AM,它將是相同的。

但是,當去編輯該單元格顯示'I AM。我不想那'字符在開始

+0

到底是什麼問題? – driis

+0

在Excel *單元格中顯示單引號還是單元格處於活動狀態時在地址欄中顯示? –

+0

爲了防止輸入困難和注入漏洞,我建議使用OleDb的編譯語句功能(IIRC)。這使得_correctly_彙編SQL語句變得更加容易,同時指定值爲_type_的 – sehe

回答

0

'(就像你幾乎所說的)表示該單元格是文本類型。

簡而言之,對於文本值,不要爲此付出汗水:這只是Excel表達「這是一個文本內容,而不是一個公式或任何東西」的方式。反正它並沒有出現。 (歷史筆記:我相信這個約定源於原始的Lotus 123兼容性,如果內存服務的話)。

這是爲了防止事情發生錯誤(想象一下,如果插入文本=3*7,是否應該將其解釋爲公式?)。

現在,我還沒有在OleDB提供程序中使用Excel,但我幾乎可以確定,您可以通過實際插入日期(或數字或...)而不是字符串來獲得所需的效果值。例如: -

INSERT INTO [book$] ([Copies]) VALUES (42) 

會插入單元格內容42

INSERT INTO [book$] ([Copies]) VALUES ('42') 

會插入單元格內容'42

+0

這不行! '123'與123 – user3600403

+0

@ user3600403相同,或許就像我說過的,我沒有使用Excel。你碰巧有什麼值得分享?你的說法並不完全清楚(事實上,'123'是不同的,所以你可能意味着你在特定的場景中沒有看到不同的結果。除此之外,我們無法猜測這個場景,你是否嘗試過其他的東西,比如'123'可以編碼123的單元格值?) – sehe