質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

ダウンロード

リモートシステムからローカルシステムへとデータを受信する事、もしくはそのようなデータ転送を行う事をダウンロードと呼びます。

Q&A

解決済

1回答

3614閲覧

Springを用いたExcelファイルダウンロードの方法

jaxxaxa

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

ダウンロード

リモートシステムからローカルシステムへとデータを受信する事、もしくはそのようなデータ転送を行う事をダウンロードと呼びます。

0グッド

0クリップ

投稿2020/04/08 01:04

編集2020/04/08 01:28

出勤管理システムの開発に挑んでいるのですが、あることが実現できず
色々調べてみたのですが解決に至らないのでご教授いただきたいです。

現状のプログラムでデバッグしたところ
「指定されたパスが見つかりません」とでました。

【環境】
・Java8
・Eclipse 4.6
・Spring Framework
・apache tomcat8.0

前提・実現したいこと

・出勤時刻、退勤時刻、昼休憩などが表で記載しているExcelファイルのダウンロードを行えるようにしたい。
・ダウンロードボタンを押下した際、リダイレクト表示ではなく
「ダウンロードが完了しました」みたいに案内が表示できるようにしたい。

発生している問題・エラーメッセージ

ボタン押下してもダウンロードができない。

試したこと

http://terasolunaorg.github.io/guideline/5.0.2.RELEASE/ja/ArchitectureInDetail/FileDownload.html#excel

上記のWebサイトも参考にしてみたのですが、実装が難しく実現できませんでした。

【Controller】

java

1@RequestMapping(value = "workList", method = RequestMethod.GET, params = { "select", "excelDownload" }) 2 public String workListGetExcelDownload(HttpServletRequest request, @RequestParam(name = "select") String userId, 3 RedirectAttributes redirectAttribute) throws ComponentException { 4 5 try { 6 // monthを取得する 7 String value = request.getParameter("month"); 8 YearMonth yearMonth; 9 10 // monthが実在する日付の場合 11 if (!InputCheck.checkDate(value, "yyyy-MM")) { 12 // monthが実在しない日付の場合、405エラーへリダイレクト 13 return "forward:/error/400"; 14 } 15 16 // DBからユーザNo.取得 17 LoginInfoBean loginInfoBean = this.userInterface.getUserInfo(userId); 18 19 // ファイル名を取得 20 String name = loginInfoBean.getFamilyName() + loginInfoBean.getFirstName(); 21 22 // monthをLocalDate型にする 23 yearMonth = InputCheck.toYearMonth(value, "yyyy-MM"); 24 25 // Excelファイルのダウンロード開始 26 try (InputStream in = new FileInputStream( 27 new File(FilePathEnum.USER_DIR.getPath() + FilePathEnum.EXCEL_TEMPLATE_PATH.getPath() 28 + String.format(FilePathEnum.EXCEL_TEMPLATE_FILE_NAME.getPath(), "name"))); 29 OutputStream out = new FileOutputStream( 30 new File(FilePathEnum.USER_DIR.getPath() + FilePathEnum.EXCEL_OUTPUT_PATH.getPath() 31 + String.format(FilePathEnum.EXCEL_TEMPLATE_FILE_NAME.getPath(), name)))) { 32 33 // ユーザNo.・monthを年月日化した値でログイン情報(ユーザNo.・氏名)を取得する 34 Context context = new Context(); 35 context = this.workListImpInterface.workListGetExcel(loginInfoBean, yearMonth); 36 37 JxlsHelper.getInstance().processTemplate(in, out, context); 38 39 } 40 41 redirectAttribute.addAttribute("select", loginInfoBean.getUserId()); 42 43 // 検索に使用した年月日をリダイレクトにセット 44 redirectAttribute.addAttribute("month", yearMonth); 45 46 // 稼働一覧画面のパス 47 return "redirect:/manager/workList"; 48 49 } catch (Exception e) { 50 e.printStackTrace(); 51 throw new ComponentException("Excelファイル出力処理例外発生.", e); 52 } 53 } 54

【Pathクラス】

java

1public enum FilePathEnum { 2 3 /** 作業用パス */ 4 //USER_DIR("C:\pleiades/workspace/Pinoco"), 5 USER_DIR("C:\eclipse/workspace/Pinoco"), 6 // USER_DIR(System.getProperty("user_dir")), 7 /** 日報エクセルテンプレートパス */ 8 EXCEL_TEMPLATE_FILE_NAME("作業実績報告書_%.xls"), 9 /** 日報エクセルテンプレートパス */ 10 EXCEL_TEMPLATE_PATH("/src/main/webapp/resources/excel/"), 11 /** 日報エクセル出力パス */ 12 EXCEL_OUTPUT_PATH("/src/main/webapp/resources/output/"); 13 14 private final String path; 15 16 private FilePathEnum(String path) { 17 this.path = path; 18 } 19 20 /** 21 * @return path 22 */ 23 public String getPath() { 24 return this.path; 25 } 26 27} 28

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

パスクラスにて
作業用パスの記述が誤っていました。(USER_DIR)

投稿2020/04/08 02:11

jaxxaxa

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問