Q1: 錯誤訊息 : 欄位太小以致於無法接受您試圖加入的資料數量。請試著插入或貼上較少的資料
A: 用OLE DB INSERT 若欄位超過255會有此問題 ORZ...
透過 OLE DB 來存取,可能會有一些限制。
可改用 Excel Object Model 來存取,但 Web Application 上應避免這種作法。
但是若資料量大...用 Excel Object Model 來存取,速度很慢....囧TZ...
改用
foreach (DataRow dr in ds.Tables[sheet.Name.ToString()].Rows)
{
for (int col = 0; col < fieldcount; col++)
{
sheet.Cells[row, col + 1] = dr[col].ToString();
}
row++;
}
一格一格填...好慢呀...>"<
以下列出OleDbType 列舉型別
存取類型名稱 | 資料庫資料類型 | OLE DB 型別 | . NET Framework 型別 | 成員名稱 ] |
文字 | VarWChar | DBTYPE_WSTR | System . String | OleDbType.VarWChar |
備忘 | LongVarWCha r | DBTYPE_WSTR | System . String | OleDbType.LongVarWChar |
位元組數目: | UnsignedTinyInt | DBTYPE_UI1 | System . Byte | OleDbType.UnsignedTinyInt |
是 / 否 | 布林值 | DBTYPE_BOOL | System . Boolean | OleDbType.Boolean |
日期 / 時間 | DateTime | DBTYPE_DATE | System . DateTime | OleDbType.date |
貨幣 | 十進位 | DBTYPE_NUMERIC | System . Decimal | OleDbType.numeric |
十進位數: | 十進位 | DBTYPE_NUMERIC | System . Decimal | OleDbType.numeric |
Double 數目: | 雙精度浮點數 | DBTYPE_R 8 | System . Double | OleDbType.Double |
Autonumber 複寫 (ID) | GUID | DBTYPE_GUID | System.Guid | OleDbType.guid |
複寫 (ID) 數目: | GUID | DBTYPE_GUID | System.Guid | OleDbType.guid |
Autonumber (長整數) | 整數 | DBTYPE_I4 | System . Int 32 | OleDbType.integer |
(Long Integer) 數目: | 整數 | DBTYPE_I4 | System . Int 32 | OleDbType.integer |
OLE 物件 | LongVarBinary | DBTYPE_BYTES | System . Byte 陣列 | OleDbType.LongVarBinary |
單一數目: | 單一 | DBTYPE_R4 | System . Single | OleDbType.single |
整數數目: | SmallInt | DBTYPE_I2 | System . Int 16 | OleDbType.SmallInt |
二進位 | VarBinary * | DBTYPE_BYTES | System . Byte 陣列 | OleDbType.binary |
超連結 | VarWChar | DBTYPE_WSTR | System . String | OleDbType.VarWChar |
匯出檔案名稱產生亂碼的問題。
針對此問題,只需將檔案名稱經 UrlEncode 編碼,即可解決中文檔名的問題。
HttpUtility.UrlEncode(FileName, Encoding)
-----------------------------------------------------------------
轉
原理是利用DataGrid(其實是其父類Control)的RenderControl方法輸出,整個DataGrid的外觀時,將這些HTML代碼寫入到緩衝區,同時設置一下 ContentType ,讓Excel自己的自動糾錯功能將這個輸出存為一個Excel文件。
很多網上的朋友使用了以上這種可粘貼性強的代碼,發現不好用,反映的錯誤類似:
「LinkButton必須放在一個具有runat=server的標籤的Form」之類的話,而更多的網友說:
問題很明顯,因為DataGrid沒有放在runat=server 的Form裏面,加上就可以了。
我認為,這種回答是很不準確的,理由如下:
- 通常使用這種代碼的人他/她的DataGrid,最起碼已經能用了,所以必定放在那個具有runat=server 的form標籤裏了。
- 報錯是LinkButton,而不是DataGrid,很多細心的朋友很可能會說,我一直在用DataGrid,LinkButton在哪來的。
其實真正的問題是,上面的代碼沒有加了
this.DataGrid1.AllowSorting = false; // *
this.DataGrid1.SelectedIndex = -1; // *
// * 的那幾行代碼引起的。
當然如果你的DataGrid,沒有排序,沒有使用那種按鈕列的話,是不會出問題的。
言歸正傳,LinkButtion其實是你將DataGrid設為可排序時候,的表頭包含的,所以我要將DataGrid的排序設為False。
同樣得到上面的其實,那些按鈕列,什麼"編輯"、「刪除」等等這些,也是用了LinkButton,把他設為不可見就是了。
其實說得再明白一點就是,將有可能產生LinkButton,或其他控件的東西都不讓它輸出就是了
=================== 2009/10/27 ===========
今天發現一個bug
用xml組成xls檔案時,data 內容有 < > 這樣會造成xls檔開不起來
會顯示運算式錯誤
<> 拿掉or 處理掉就好了~
ex: 下面的<text> ,應該是衝到了
<Cell ss:StyleID='s24'><Data ss:Type='String'>嘉義市彌陀路373號 <test> </Data></Cell>
留言列表