2008-01-04 15:08 開發excel 問題討論串
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 |



