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

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

新規登録して質問してみよう
ただいま回答率
85.54%
Spring MVC

Spring MVCとは、Javaを用いてWebアプリケーションを開発できるフレームワーク。アーキテクチャにMVCを採用しており、画面遷移と入出力パラメータの受け渡しの基本的な機能の他、ユーザーの送信したパラメータに対する入力チェックなどさまざまな機能を持ちます。

Java

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

882閲覧

POIを使ったファイルの出力について

tama826

総合スコア3

Spring MVC

Spring MVCとは、Javaを用いてWebアプリケーションを開発できるフレームワーク。アーキテクチャにMVCを採用しており、画面遷移と入出力パラメータの受け渡しの基本的な機能の他、ユーザーの送信したパラメータに対する入力チェックなどさまざまな機能を持ちます。

Java

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2023/02/02 05:18

編集2023/02/02 06:34

実現したいこと

  • org.apache.poi.ss.usermodelを使ってファイルを作成したい。

前提

SpringBootを使って、Excelファイル出力のAPIを作成しています。
Excelファイルの出力はできるのですが、ファイル名を指定した作成方法がわからず困っています。
ファイル名のフォーマットは、「ファイル名_yyyy_MM_dd.xlsx」です。

助言を頂きたく質問させていただきます。

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

エラーの出力はありません。

該当のソースコード

Java

1// コントローラー 2@RequestMapping(name = "api_excel", path = "/api/excel", method = RequestMethod.GET) 3 public ExcelService excel(@RequestParam(name = "fy", required = true)Integer fy, Model model, ExcelService mav){ 4 5 //処理 6 model.addAttribute(・・・); 7 8 mav.addStaticAttribute("mydata", "myvalue"); 9 10 return mav; 11 } 12} 13 14//サービス 15public class ExcelService extends AbstractXlsxView{ 16 17 @Override 18 protected void buildExcelDocument(Map<String, Object> model, Workbook workbook, HttpServletRequest request, 19 HttpServletResponse response) throws Exception { 20 // サービス処理 21 } 22} 23

試したこと

XSSF/SXSSFのドキュメントを調べたが、解決できなかったため質問しました。

補足情報(FW/ツールのバージョンなど)

JDK11

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

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

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

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

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

m.ts10806

2023/02/02 05:36

ドキュメントのURLも提示してください。どこを確認し、何を試し、何が起きたのかを具体的に記載してください。
hoshi-takanori

2023/02/02 05:40

Excel ファイルをどこにどんな名前で保存して、どのように利用したいのでしょうか? サーバーにそのまま保存? それとも、ブラウザ側に送り返す?
tama826

2023/02/02 06:09 編集

m.ts10806さん 以下のドキュメントを参考にしました。 ドキュメントではファイル名を指定して保存するためにHSSFWorkbookをインスタンス化して作成しています。 私のコーディングではbuildExcelDocument中でWorkbookを使っており、うまくドキュメントを取り込むことができませんでした。 https://poi.apache.org/components/spreadsheet/how-to.html hoshi-takanoriさん Excelファイル名は固定の日本語名で出力したいです。 作成したファイルはflutterのurl_launcherを使ってブラウザから取得したいです。
hoshi-takanori

2023/02/02 06:13

ファイル名が固定だと複数の人が同時にアクセスしたら上書きされちゃうのでは? とか、日本語ファイル名は文字コードでトラブルになりそうとか、ブラウザから取得する際のアクセス制御はどうするんだろう? とか…。
tama826

2023/02/02 06:20 編集

なるほど、同時アクセス制御や文字コードの考慮はしていなかったです。 そうすると、固定ファイル名にタイムスタンプを付与したほうが良いのですね。
m.ts10806

2023/02/02 06:25

質問は編集できますので、適宜調整を。
tama826

2023/02/02 06:35

質問内容にファイルのフォーマットを追記しました。
jimbe

2023/02/02 16:19

>同時アクセス制御 >固定ファイル名にタイムスタンプ 年月日だけでは、同一日内のアクセスは上書きされますけど…。 時分秒ミリ秒迄やっても重なる可能性はゼロにはなりませんし、ユーザが区別出来るならその情報も付けるとか、やるならキチンとやったほうが良いと思います。 (後から『知らないデータが来た』とかなると何処かの確定申告になっちゃいます。)
tama826

2023/02/03 05:14

jimbeさん ご指摘ありがとうございます。 時分秒ミリ秒までのファイル名のフォーマットで出力できるように修正しました。
guest

回答1

0

ベストアンサー

Excelファイルの出力はできるのですが、ファイル名を指定した作成方法がわからず困っています。

HTTPレスポンスヘッダのContent-Disposition属性にファイル名を設定すればよいかと思います。

java

1response.setHeader("content-disposition", "attachment; filename=ファイル名_yyyy_MM_dd.xlsx");

Content-Dispositionの詳細については次のリンクを確認してください。

https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Disposition

投稿2023/02/02 10:46

neko_the_shadow

総合スコア2215

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.54%

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

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

質問する

同じタグがついた質問を見る

Spring MVC

Spring MVCとは、Javaを用いてWebアプリケーションを開発できるフレームワーク。アーキテクチャにMVCを採用しており、画面遷移と入出力パラメータの受け渡しの基本的な機能の他、ユーザーの送信したパラメータに対する入力チェックなどさまざまな機能を持ちます。

Java

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。