背景:我從數據庫中填充大量asp.net c#GridViews和ListViews,隨後用戶可能會將它們導出到Excel。我想導出爲本機Excel(不是html)。我無法使用辦公自動化,而且我使用的JET工作正常。我無法控制用戶的機器。GridView中的Typeof數據/列表視圖綁定,模板和自動生成的字段
問題:在做出口的,你得告訴噴氣什麼類型的每個字段,在我的情況下,「文本」(VARCHAR)或「數字」(雙)。不同之處在於,如果您導出數字列,則用戶可以在Excel中對數據進行求和,其中字符串使用前導撇號導出,因此在算術中用處不大。
目前我解析Grid/ListView的第一個數據行,檢查每個值是數字還是文本,並相應地爲列指定一個類型。這是有效的,除了當我有第一列中看起來數字,但實際上是一個文本字符串的東西。我不想解析每一行,以確保我有正確的數據類型,因爲其中一些導出非常大。
當我從數據庫加載Grid/ListView時,數據庫肯定知道每個字段是什麼類型。所以我的問題是...我如何提取Grid/ListView項目後面的數據庫項目的類型?我可以明確地將其編碼爲該項目的一個屬性,但這是重複我已擁有的信息,只要我能達到它。
我知道我在哪裏有DataTable,然後我可以從中獲取底層類型,但大多數情況下我沒有方便的表格,只是Grid/ListView。
- (編輯) 請注意,如果您嘗試將空字符串插入可爲空的數字列,則Jet將拋出。執行此操作的方法是從插入語句中省略該列名稱,或輸出零。
嗯......我試圖避免在任何地方明確地編碼數據類型,因爲數據庫知道它是什麼,我不想複製這些知識。也許沒有辦法避免編碼。 – philw 2010-08-18 19:26:28
@philw你不會明確地做到這一點,你只需要捕獲這些信息並以一種可以訪問的格式進行存儲。在你需要的地方,它已經不存在了,所以你需要一種方法來獲取數據。希望有所幫助。 – Kelsey 2010-08-18 20:00:56