[.NET] datagrid存入EXCEL問題

看板Visual_Basic作者 (殘心)時間16年前 (2009/09/02 00:58), 編輯推噓1(109)
留言10則, 3人參與, 最新討論串1/1
小弟使用VB.NET寫了一個程式 需要將datagrid內的資料存入EXCEL 小弟的做法是將"另存EXCEL"的button觸發JavaScript程式 再開啟本身頁面並清除datagrid以外所有的東西 但是datagrid內有資料為長串純數字 存入EXCEL則自動轉為科學符號 EX:070090988000482會變成7.0091E+13 有沒有比較有效率的儲存方式 可以將datagrid存入EXCEL時自動將儲存格格式定為文字 以防純長串數字被轉為科學符號!? 在"另存excel"onclick觸發以下JavaScript程式 <script language="javascript"> function ExportExcel(){ var sSYY = document.getElementById("hidSYY").value; var sSMM = document.getElementById("hidSMM").value; var sEYY = document.getElementById("hidEYY").value; var sEMM = document.getElementById("hidEMM").value; var sType= document.getElementById("hidTYPE").value; var sUrl = "頁面檔案名稱.aspx?EXCEL=YES&sYY=" + sSYY + "&sMM=" + sSMM + "&eYY=" + sEYY + "&eMM=" + sEMM + "&TYPE=" + sType; window.open (sUrl, 'newwindow', 'height=200, width=500, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no'); } </script> 然後再.aspx檔中的<asp:datagrid>之前加入以下程式片段 <% '將DataGrid轉入EXCEL並詢問儲存 if bIsExcel then Response.Clear() Response.ContentType = "application/vnd.ms-excel" '下面這行是要確保編碼 Response.ContentEncoding = HttpContext.Current.Request.ContentEncoding.Default Response.AddHeader("content-disposition", "attachment; filename=" & System.Web.HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8)) end If %> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.221.23

09/02 07:14, , 1F
在前面或後面加入一個空白試試 以前好像是這樣繞過去的
09/02 07:14, 1F

09/02 09:41, , 2F
沒有辦法,依然自動被EXCEL省略掉
09/02 09:41, 2F

09/02 09:58, , 3F
那麼前面加單引號( ' )試試看
09/02 09:58, 3F
補充說明一下 我的datagrid中有碰到困擾的欄位為以下 <asp:TemplateColumn Visible="false" HeaderText="追蹤考核案號"> <HeaderStyle HorizontalAlign="Center" Width="15%" ></HeaderStyle> <ItemStyle HorizontalAlign="Center" Width="15%" ></ItemStyle> <ItemTemplate> <asp:Label Runat="server" id="dglblCASEID" text='<%#DataBinder.Eval(Container.DataItem,"CASEID")%>'> </asp:Label> </ItemTemplate> </asp:TemplateColumn> 若我在text屬性串上空白 text='<%#"&nbsp;" & DataBinder.Eval(Container.DataItem,"CASEID")%>' 則存入EXCEL時會變成 "?070090988000482" 而假使串上" "則會被EXCEL自動忽略掉而一樣顯示為科學符號 若是串上單引號,則頁面顯示為錯誤無法執行 個人猜測應該是單引號為保留字之類的原因 而且在轉入的EXCEL檔案中,把原始檔打開 在長串數字前加上單引號如下 '070090988000482 在進入EXCEL時顯示一樣同上,但點選儲存格兩下之後則自動變為文字儲存格式 ※ 編輯: nickboy 來自: 61.67.153.180 (09/02 14:02) 已經解決,自問自答一下 感謝MOONRAKER大提供的意見,在文字前面加上空白 可能是text內的屬性會自動把空白轉成問號 我試著在頁面原始檔(.aspx)中的<asp:Label>之前加入空白如下 &nbsp; <asp:Label Runat="server" id="dglblCASEID" text='<%#DataBinder.Eval(Container.DataItem,"CASEID")%>'> </asp:Label> 在存入EXCEL的時候就會自動變成文字儲存格式了 在存入的EXCEL檔中去檢視原始檔則會看到該欄位如下 </td><td class="td2c" align="Center" style="width:15%;"> &nbsp;<span id="dgRpt__ctl2_dglblCASEID">070090988000482</span> </td> 所以存入EXCEL時不會自動移除開頭的0以及自動轉為科學符號 ※ 編輯: nickboy 來自: 61.67.153.180 (09/02 14:36)

09/03 11:14, , 4F
推很詳細…下次我還有機會寫大概也會來看這篇
09/03 11:14, 4F

09/03 11:15, , 5F
我已經忘記以前怎麼繞過去的,只記得空白,不記得&nbsp;
09/03 11:15, 5F

09/03 11:15, , 6F
其實可能也不是這樣解決的…總之再推。
09/03 11:15, 6F

09/03 16:06, , 7F
原來單引號也可以這樣用 之前用在手機號碼前面可以保留0
09/03 16:06, 7F

09/03 16:06, , 8F
謝版大提供資源^^
09/03 16:06, 8F

09/03 16:58, , 9F
單引號那是從Lotus 123時期就有的設計 Excel學過來的
09/03 16:58, 9F

09/03 16:59, , 10F
Lotus使用'表示文字 "表示文字靠左對齊 ^文字置中對齊
09/03 16:59, 10F
文章代碼(AID): #1AdLAw0i (Visual_Basic)