台灣最大程式設計社群網站
線上人數
972
 
會員總數:240897
討論主題:186659
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 網頁GridView和chart匯出問題
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
網頁GridView和chart匯出問題
價值 : 50 QP  點閱數:206 回應數:7

樓主

chda
門外漢
0 4
72 4
發送站內信

現況:網頁上有一GridView和Chart有一匯出EXCEL按鈕,按下按鈕後會將GridView和Chart匯到EXCEL檔,並存到c:\device\Chart.xlsx
問題:現在是直接存到c:\device\Chart.xlsx,請教如何改成按下按鈕後跳出畫面選擇存檔位置和指定檔名.
現在程式:

Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click, btnSave0.Click
Dim j, pds, pdno
j = GridView2.Rows.Count
Dim ef As ExcelFile = New ExcelFile
Dim ws As ExcelWorksheet = ef.Worksheets.Add("Chart")
Dim numberOfEmployees As Integer = j
' Create Excel chart and select data for it.
Dim chart = ws.Charts.Add(ChartType.Line, "F3", "O26")
'chart.SelectData(ws.Cells.GetSubrangeAbsolute(0, 0, GridView2, 1), True)
chart.SelectData(ws.Cells.GetSubrangeAbsolute(0, 0, numberOfEmployees, 3), True)
chart.Title.Text = "設備歷史資料圖"
For i As Integer = 0 To numberOfEmployees - 1
pdno = GridView2.Rows(i).Cells(0).Text
ws.Cells(i + 1, 0).Value = GridView2.Rows(i).Cells(1).Text
ws.Cells(i + 1, 1).Value = Val(GridView2.Rows(i).Cells(3).Text)
ws.Cells(i + 1, 2).Value = Val(GridView2.Rows(i).Cells(4).Text)
ws.Cells(i + 1, 3).Value = Val(GridView2.Rows(i).Cells(5).Text)
Next
ws.Cells(0, 0).Value = "Time"
ws.Cells(0, 1).Value = "Temperature"
ws.Cells(0, 2).Value = "Humidity"
ws.Cells(0, 3).Value = "Current"
ws.Cells(0, 0).Style.Font.Weight = ExcelFont.BoldWeight
ws.Cells(0, 1).Style.Font.Weight = ExcelFont.BoldWeight
ws.Columns(0).Width = CInt(LengthUnitConverter.Convert(4, LengthUnit.Centimeter, LengthUnit.ZeroCharacterWidth256thPart))
ws.PrintOptions.FitWorksheetWidthToPages = 1
ws.PrintOptions.FitWorksheetHeightToPages = 1
'判別路徑資料夾是否存在:
If Not IO.Directory.Exists("c:\device") Then
'如不存在,建立資料夾
IO.Directory.CreateDirectory("c:\device")
'判別路徑檔案是否存在:
' System.IO.File.Exists("Path+FileName")
Else
End If
ef.Save("c:\device\Chart.xlsx")

End Sub




搜尋相關Tags的文章: [ 存檔位置 ] , [ 指定檔名. ] ,
本篇文章發表於2017-08-10 22:32
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

MIS2000 Lab
檢舉此回應
按鈕前面,加一個 TextBox
給使用者自己填寫存檔的目錄(資料夾)

如果他不填寫,就是預設值 c:\device

這樣可以嗎?
本篇文章回覆於2017-08-11 09:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
指定檔名應該是Ok的

但,指定目錄這部分
產出檔案,要存哪裡,那是Client端的事情
Server端程式理論上是不能干預的

^.^a
本篇文章回覆於2017-08-11 10:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
不好意,先確認一件事情



您這段,是執行在『Server端』的程式
所以您的意思,是要存在
1.『Server端』Server主機的C:\Device這個資料夾嗎?
2.存在『Client端使用者電腦』上的C:\Device

您想要的是1, 還是 2

1.的話,可以資料夾不存在,就建立一個
2.的話就不可能了,Server端的程式無法讓檔案直接存在Client端並指定位置

^.^a

本篇文章回覆於2017-08-11 11:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

chda
檢舉此回應
MIS2000 Lab 大大的方式有想過可不被接受...
topcat 版主 我目前在SERVER端OK還未實際跑Client端...,但最終會是Client端執行網頁後存檔在Client端.
試過好多東西目前無解中...懷念VB6的SaveFileDialog,可惜整個被迫改成網頁版,一切從頭來...
本篇文章回覆於2017-08-12 00:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

MIS2000 Lab
檢舉此回應
Q : 但最終會是Client端執行網頁後存檔在Client端.

A : 應該做不到吧

您有先瞭解一下網頁程式的先天限制嗎?
例如 http://mis2000lab.pixnet.net/blog/post/34536453

您是寫 VB6出身,應該熟悉Windows Form
現在的網頁程式跟您熟悉的Windows平台,有些差異

先理解兩者的差異,再來跟使用者談需求
會比較好做
本篇文章回覆於2017-08-14 08:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
我目前在SERVER端OK還未實際跑Client端...,但最終會是Client端執行網頁後存檔在Client端

就小喵的理解來說
Server端處理OK
存Client端也OK(下載)
但,Client端要存在哪裡
這不是Server端可以指定的

如果您希望Client端存放在指定的位置
小喵的建議是,做個SOP的手冊,甚至是教學影片
教導怎樣讓使用者下載時,指定您希望的位置

另,可否聊一聊,為何要存Client端的時候,要指定位置?
是否有什麼特別考量
知道您的目的,也許可以給您其他的建議,讓存放不必非得指定位置

^_^
本篇文章回覆於2017-08-17 21:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

MIS2000 Lab
檢舉此回應
就好像我去便利商店買東西
結帳後,店員找錢給我
他卻「限制我」只能把找來的錢放在右邊口袋,不能放在其他地方,不然....翻臉喔

這樣會不會很奇怪? :-)

網站給人下載檔案,限制下載的檔案「只能」放在XX資料夾裡面,不也一樣。

事實上,這個問題算是FAQ
我常常遇見學生問我「檔案上傳 (FileUpload)的時候,可以限制對方只能從XX資料夾上傳檔案嗎?」
或是「FileIUpload裡面,能事先寫好(寫死)上傳檔案的目錄、資料夾路徑嗎?」

我一直不理解他的想法是什麼,但這幾乎是一個FAQ

只能這樣回答他「我去店裡賣東西,店員說:我只收你左邊口袋拿出來的錢」
這樣合理嗎? :-P

對方要上傳一份 Excel檔,他放在 c:\或是 C:\Hello目錄下,有什麼差異呢?
對方的檔案(Client端)要放在哪裡,不是他的自由嗎?
本篇文章回覆於2017-08-18 08:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.