close

 

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裏面,加上就可以了。

我認為,這種回答是很不準確的,理由如下:

  1. 通常使用這種代碼的人他/她的DataGrid,最起碼已經能用了,所以必定放在那個具有runat=server 的form標籤裏了。
  2. 報錯是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>

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 11 的頭像
    11

    冠霖的部落格

    11 發表在 痞客邦 留言(4) 人氣()