質問編集履歴

4

コードの修正

2016/02/09 16:56

投稿

DgRp_08
DgRp_08

スコア56

test CHANGED
File without changes
test CHANGED
@@ -28,6 +28,84 @@
28
28
 
29
29
  ```VB.NET
30
30
 
31
+ '==================================================
32
+
33
+ 'asapxA.aspx(呼び出し元)
34
+
35
+ '==================================================
36
+
37
+ <a runat="server" id="linkDL" name="linkDL" href="#dummy" onclick="return linkDL_Click">
38
+
39
+ Download
40
+
41
+ </a>
42
+
43
+ '// [javaScript]
44
+
45
+ function linkDl_Click(){
46
+
47
+ var returnVal = window.showModalDialog(
48
+
49
+ "aspxB.aspx", "_self"
50
+
51
+ );
52
+
53
+
54
+
55
+ '// 取得データが有る場合
56
+
57
+ if(typeof returnVal != 'undefind' && returnVal != '' {
58
+
59
+ window.open('DownLoad.aspx?path=' + returnVal, 'DownLoad');
60
+
61
+ }
62
+
63
+ return false;
64
+
65
+ }
66
+
67
+
68
+
69
+
70
+
71
+ '==================================================
72
+
73
+ 'aspxB.aspx
74
+
75
+ '==================================================
76
+
77
+ '// JavaScript
78
+
79
+ function funcOnLoad() {
80
+
81
+ window.returnValue = document.getElementById("hdn_DownloadPath").value;
82
+
83
+ window.close();
84
+
85
+ }
86
+
87
+
88
+
89
+ <body onload="funcOnLoad()">
90
+
91
+ <form id="aspxB" runat="server">
92
+
93
+ <asp:HiddenField runat="server" ID="hdn_DownloadPath">
94
+
95
+ </form>
96
+
97
+ </body>
98
+
99
+
100
+
101
+
102
+
103
+ '--------------------------------------------------
104
+
105
+ 'aspxB.aspx.vb(aspxB.aspxから呼び出される)
106
+
107
+ '--------------------------------------------------
108
+
31
109
  Dim strNewName As string '// 出力ファイル名
32
110
 
33
111
  Dim strTempPath As string '// テンプレートパス
@@ -80,28 +158,58 @@
80
158
 
81
159
  GC.Collect()
82
160
 
161
+ Me.hdn_DownloadPath.Value = newFileName
162
+
163
+
164
+
165
+
166
+
167
+ '==================================================
168
+
169
+ 'DownLoad.aspx
170
+
171
+ '==================================================
172
+
173
+ Dim strDownloadPath As string
174
+
175
+
176
+
177
+ strDownloadPath = Request.Querystring("path")
178
+
179
+
180
+
181
+ '//Excel返却処理
182
+
183
+ Response.Buffer = turue
184
+
185
+ Response.ContentType = "application/octet.stream"
186
+
187
+ '// ContentTypeは下記2つも試し済み
188
+
189
+ '// application/vnd.ms-excel
190
+
191
+ '// application/msexcel
192
+
193
+ Response.ContentEncoding = Encoding.GetEncoding("UTF-8")
194
+
195
+ Response.AddHeader("content-disposition", "attachement;filename=" + strDownloadPath)
196
+
197
+ Response.TransmitFile([出力先パス] + strDownloadPath)
198
+
199
+ Response.Flush()
200
+
83
201
  ```
84
202
 
85
203
 
86
204
 
87
-
205
+ 追記・修正:
206
+
88
-
207
+ コードの抜き出すべき所が分かっておりませんでした。
208
+
89
-
209
+ コード記載を修正したのでご参照いただけると幸いです。
210
+
211
+ お客様の要望、また作業場所の環境など諸事情で他ツール等の使用はできません。
212
+
213
+ この条件だと、[.xlsx]のままでExcelファイルダウンロードはできないのでしょうか?
90
214
 
91
215
  宜しくお願い致します。
92
-
93
-
94
-
95
- 追記:
96
-
97
- Open XML SDK 2.5 Productivity Tool を使用しておかしい箇所を見定めようとも思いましたが、対象ファイルを選択すると「Cannot open the File:ファイルのデータが壊れています」、とのことで使用できませんでした。
98
-
99
-
100
-
101
- すみません。記載コードは的外れで、この後のResponseのあたりの処理に問題がありました。
102
-
103
- テンプレートはExcel2010で、.xlsx 拡張子ですが、.xls 拡張子だと壊れない模様。
104
-
105
- しかし、.xlsx 拡張子で出力したいのです。
106
-
107
- content type のあたり調べてみます。

3

2016/02/09 16:56

投稿

DgRp_08
DgRp_08

スコア56

test CHANGED
File without changes
test CHANGED
@@ -95,3 +95,13 @@
95
95
  追記:
96
96
 
97
97
  Open XML SDK 2.5 Productivity Tool を使用しておかしい箇所を見定めようとも思いましたが、対象ファイルを選択すると「Cannot open the File:ファイルのデータが壊れています」、とのことで使用できませんでした。
98
+
99
+
100
+
101
+ すみません。記載コードは的外れで、この後のResponseのあたりの処理に問題がありました。
102
+
103
+ テンプレートはExcel2010で、.xlsx 拡張子ですが、.xls 拡張子だと壊れない模様。
104
+
105
+ しかし、.xlsx 拡張子で出力したいのです。
106
+
107
+ content type のあたり調べてみます。

2

コード機能使用

2016/02/09 02:16

投稿

DgRp_08
DgRp_08

スコア56

test CHANGED
File without changes
test CHANGED
@@ -26,9 +26,9 @@
26
26
 
27
27
 
28
28
 
29
- =============================================
29
+ ```VB.NET
30
30
 
31
- **Dim strNewName As string '// 出力ファイル名
31
+ Dim strNewName As string '// 出力ファイル名
32
32
 
33
33
  Dim strTempPath As string '// テンプレートパス
34
34
 
@@ -38,51 +38,53 @@
38
38
 
39
39
  Dim wkBook As Excel.WorkBook
40
40
 
41
- Dim wkSheet As Excel.WorkSheet**
41
+ Dim wkSheet As Excel.WorkSheet
42
42
 
43
43
 
44
44
 
45
- **[代入記述省略]**
45
+ ' [代入記述省略]
46
46
 
47
47
 
48
48
 
49
- **System.IO.File.Copy(strTempPath,strOutputPath)
49
+ System.IO.File.Copy(strTempPath,strOutputPath)
50
50
 
51
51
  xlApp = CreateObject("Excel.Application")
52
52
 
53
- wkBook = xlApp.WorkBooks.Open(strOutputPath)**
53
+ wkBook = xlApp.WorkBooks.Open(strOutputPath)
54
54
 
55
- **wkSheet = wkBook.WorkSheets("Sheet1") '// 実際は名前設定済の9シートが存在しています**
55
+ wkSheet = wkBook.WorkSheets("Sheet1") '// 実際は名前設定済の9シートが存在しています
56
56
 
57
57
 
58
58
 
59
- **[DBデータ取得(処理詳細省略)]
59
+ ' [DBデータ取得(処理詳細省略)]
60
60
 
61
- [指定シート、指定セルへデータを出力(処理詳細省略)]
61
+ ' [指定シート、指定セルへデータを出力(処理詳細省略)]
62
62
 
63
- [入力規則の設定(処理詳細省略)]**
63
+ ' [入力規則の設定(処理詳細省略)]
64
64
 
65
65
 
66
66
 
67
- **System.Runtie.InteropServices.Marshal.ReleaseComObject(wkSheet)
67
+ System.Runtie.InteropServices.Marshal.ReleaseComObject(wkSheet)
68
68
 
69
69
  wkBook.Close(SaveChanges:=True)
70
70
 
71
71
  System.Runtie.InteropServices.Marshal.ReleaseComObject(wkBook)
72
72
 
73
- System.Runtie.InteropServices.Marshal.ReleaseComObject(xlApp)**
73
+ System.Runtie.InteropServices.Marshal.ReleaseComObject(xlApp)
74
74
 
75
- **wkSheet = Nothing
75
+ wkSheet = Nothing
76
76
 
77
77
  wkBook = Nothing
78
78
 
79
79
  xlApp = Nothing
80
80
 
81
- GC.Collect()**
81
+ GC.Collect()
82
+
83
+ ```
82
84
 
83
85
 
84
86
 
85
- =============================================
87
+
86
88
 
87
89
 
88
90
 

1

OpenXMLのツール使用について追記

2016/02/08 16:49

投稿

DgRp_08
DgRp_08

スコア56

test CHANGED
File without changes
test CHANGED
@@ -87,3 +87,9 @@
87
87
 
88
88
 
89
89
  宜しくお願い致します。
90
+
91
+
92
+
93
+ 追記:
94
+
95
+ Open XML SDK 2.5 Productivity Tool を使用しておかしい箇所を見定めようとも思いましたが、対象ファイルを選択すると「Cannot open the File:ファイルのデータが壊れています」、とのことで使用できませんでした。