teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

コードの修正

2016/02/09 16:56

投稿

DgRp_08
DgRp_08

スコア56

title CHANGED
File without changes
body CHANGED
@@ -13,6 +13,45 @@
13
13
  参考として細かいところを省いたコードを下記に記載致しますので、ご助力いただければ幸いです。
14
14
 
15
15
  ```VB.NET
16
+ '==================================================
17
+ 'asapxA.aspx(呼び出し元)
18
+ '==================================================
19
+ <a runat="server" id="linkDL" name="linkDL" href="#dummy" onclick="return linkDL_Click">
20
+ Download
21
+ </a>
22
+ '// [javaScript]
23
+ function linkDl_Click(){
24
+ var returnVal = window.showModalDialog(
25
+ "aspxB.aspx", "_self"
26
+ );
27
+
28
+ '// 取得データが有る場合
29
+ if(typeof returnVal != 'undefind' && returnVal != '' {
30
+ window.open('DownLoad.aspx?path=' + returnVal, 'DownLoad');
31
+ }
32
+ return false;
33
+ }
34
+
35
+
36
+ '==================================================
37
+ 'aspxB.aspx
38
+ '==================================================
39
+ '// JavaScript
40
+ function funcOnLoad() {
41
+ window.returnValue = document.getElementById("hdn_DownloadPath").value;
42
+ window.close();
43
+ }
44
+
45
+ <body onload="funcOnLoad()">
46
+ <form id="aspxB" runat="server">
47
+ <asp:HiddenField runat="server" ID="hdn_DownloadPath">
48
+ </form>
49
+ </body>
50
+
51
+
52
+ '--------------------------------------------------
53
+ 'aspxB.aspx.vb(aspxB.aspxから呼び出される)
54
+ '--------------------------------------------------
16
55
  Dim strNewName As string '// 出力ファイル名
17
56
  Dim strTempPath As string '// テンプレートパス
18
57
  Dim strOutputPath As string '// 出力先パス
@@ -39,16 +78,31 @@
39
78
  wkBook = Nothing
40
79
  xlApp = Nothing
41
80
  GC.Collect()
42
- ```
81
+ Me.hdn_DownloadPath.Value = newFileName
43
82
 
44
83
 
84
+ '==================================================
85
+ 'DownLoad.aspx
86
+ '==================================================
87
+ Dim strDownloadPath As string
45
88
 
46
- 宜しくお願い致します。
89
+ strDownloadPath = Request.Querystring("path")
47
90
 
91
+ '//Excel返却処理
92
+ Response.Buffer = turue
93
+ Response.ContentType = "application/octet.stream"
94
+ '// ContentTypeは下記2つも試し済み
95
+ '// application/vnd.ms-excel
96
+ '// application/msexcel
97
+ Response.ContentEncoding = Encoding.GetEncoding("UTF-8")
98
+ Response.AddHeader("content-disposition", "attachement;filename=" + strDownloadPath)
99
+ Response.TransmitFile([出力先パス] + strDownloadPath)
100
+ Response.Flush()
48
- 追記:
101
+ ```
49
- Open XML SDK 2.5 Productivity Tool を使用しておかしい箇所を見定めようとも思いましたが、対象ファイルを選択すると「Cannot open the File:ファイルのデータが壊れています」、とのことで使用できませんでした。
50
102
 
51
- すみません。載コードは的外れで、この後のResponseのあたりの処理に問題がありました。
103
+ ・修正:
52
- テンプレートはExcel2010で、.xlsx 拡張子ですが、.xls 拡張子だと壊れない模様。
53
- し、.xlsx 拡張子出力したいのです
104
+ コードの抜き出すべき所が分っておりませんでした。
54
- content type り調べてみます。
105
+ コード記載を修正したでご参照いだけると幸いです。
106
+ お客様の要望、また作業場所の環境など諸事情で他ツール等の使用はできません。
107
+ この条件だと、[.xlsx]のままでExcelファイルダウンロードはできないのでしょうか?
108
+ 宜しくお願い致します。

3

2016/02/09 16:56

投稿

DgRp_08
DgRp_08

スコア56

title CHANGED
File without changes
body CHANGED
@@ -46,4 +46,9 @@
46
46
  宜しくお願い致します。
47
47
 
48
48
  追記:
49
- Open XML SDK 2.5 Productivity Tool を使用しておかしい箇所を見定めようとも思いましたが、対象ファイルを選択すると「Cannot open the File:ファイルのデータが壊れています」、とのことで使用できませんでした。
49
+ Open XML SDK 2.5 Productivity Tool を使用しておかしい箇所を見定めようとも思いましたが、対象ファイルを選択すると「Cannot open the File:ファイルのデータが壊れています」、とのことで使用できませんでした。
50
+
51
+ すみません。記載コードは的外れで、この後のResponseのあたりの処理に問題がありました。
52
+ テンプレートはExcel2010で、.xlsx 拡張子ですが、.xls 拡張子だと壊れない模様。
53
+ しかし、.xlsx 拡張子で出力したいのです。
54
+ content type のあたり調べてみます。

2

コード機能使用

2016/02/09 02:16

投稿

DgRp_08
DgRp_08

スコア56

title CHANGED
File without changes
body CHANGED
@@ -12,36 +12,37 @@
12
12
 
13
13
  参考として細かいところを省いたコードを下記に記載致しますので、ご助力いただければ幸いです。
14
14
 
15
- =============================================
15
+ ```VB.NET
16
- **Dim strNewName As string '// 出力ファイル名
16
+ Dim strNewName As string '// 出力ファイル名
17
17
  Dim strTempPath As string '// テンプレートパス
18
18
  Dim strOutputPath As string '// 出力先パス
19
19
  Dim xlApp As Excel.Application
20
20
  Dim wkBook As Excel.WorkBook
21
- Dim wkSheet As Excel.WorkSheet**
21
+ Dim wkSheet As Excel.WorkSheet
22
22
 
23
- **[代入記述省略]**
23
+ ' [代入記述省略]
24
24
 
25
- **System.IO.File.Copy(strTempPath,strOutputPath)
25
+ System.IO.File.Copy(strTempPath,strOutputPath)
26
26
  xlApp = CreateObject("Excel.Application")
27
- wkBook = xlApp.WorkBooks.Open(strOutputPath)**
27
+ wkBook = xlApp.WorkBooks.Open(strOutputPath)
28
- **wkSheet = wkBook.WorkSheets("Sheet1") '// 実際は名前設定済の9シートが存在しています**
28
+ wkSheet = wkBook.WorkSheets("Sheet1") '// 実際は名前設定済の9シートが存在しています
29
29
 
30
- **[DBデータ取得(処理詳細省略)]
30
+ ' [DBデータ取得(処理詳細省略)]
31
- [指定シート、指定セルへデータを出力(処理詳細省略)]
31
+ ' [指定シート、指定セルへデータを出力(処理詳細省略)]
32
- [入力規則の設定(処理詳細省略)]**
32
+ ' [入力規則の設定(処理詳細省略)]
33
33
 
34
- **System.Runtie.InteropServices.Marshal.ReleaseComObject(wkSheet)
34
+ System.Runtie.InteropServices.Marshal.ReleaseComObject(wkSheet)
35
35
  wkBook.Close(SaveChanges:=True)
36
36
  System.Runtie.InteropServices.Marshal.ReleaseComObject(wkBook)
37
- System.Runtie.InteropServices.Marshal.ReleaseComObject(xlApp)**
37
+ System.Runtie.InteropServices.Marshal.ReleaseComObject(xlApp)
38
- **wkSheet = Nothing
38
+ wkSheet = Nothing
39
39
  wkBook = Nothing
40
40
  xlApp = Nothing
41
- GC.Collect()**
41
+ GC.Collect()
42
+ ```
42
43
 
43
- =============================================
44
44
 
45
+
45
46
  宜しくお願い致します。
46
47
 
47
48
  追記:

1

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

2016/02/08 16:49

投稿

DgRp_08
DgRp_08

スコア56

title CHANGED
File without changes
body CHANGED
@@ -42,4 +42,7 @@
42
42
 
43
43
  =============================================
44
44
 
45
- 宜しくお願い致します。
45
+ 宜しくお願い致します。
46
+
47
+ 追記:
48
+ Open XML SDK 2.5 Productivity Tool を使用しておかしい箇所を見定めようとも思いましたが、対象ファイルを選択すると「Cannot open the File:ファイルのデータが壊れています」、とのことで使用できませんでした。