質問するログイン新規登録
Java

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

Q&A

解決済

1回答

2201閲覧

POIで作成したExcelが「編集のため、ロックされています」と表示されてしまう

hottan_stec

総合スコア12

Java

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

0グッド

0クリップ

投稿2022/06/09 11:55

0

0

前提

JavaにてPOIを使用したWebサーバー上で動く、Excel操作を行うプログラムを作成しました。
プログラムで作成されたExcelファイルを開こうとすると、
「(該当ファイル名)は編集のため、ロックされています」と表示されてしまいます。
読み取り専用で開くことはできます。
Excelファイル作成完了後にファイルのクローズ処理はやっているつもりです。

実現したいこと

作成されたExcelファイルにロックがかからないようにしたい

該当のソースコード

Java

1public int setExcelData(String season, String year, String groupsName, ArrayList<Employee> empList, ArrayList<HashMap<String,String>> remnantData){ 2 3 Workbook outputWorkbook = new XSSFWorkbook(); 4 5 // シートを作成 6 Sheet outputSheet = outputWorkbook.createSheet("シート"); 7 8 // 1行目を生成 9 Row outputRow = outputSheet.createRow(0); 10 // セルを作成 11 Cell outputCell = outputRow.createCell(1); 12 13 /*** 14 15 このあたりでセルに値を設定する処理を実行 16 17 ***/ 18 19 createFileName = "ファイル格納パス"; 20 21 // 出力用のストリームを用意 22 FileOutputStream out; 23 try { 24 out = new FileOutputStream(createFileName); 25 } catch (FileNotFoundException e) { 26 // TODO 自動生成された catch ブロック 27 e.printStackTrace(); 28 try { 29 outputWorkbook.close(); 30 } catch (IOException e1) { 31 // TODO 自動生成された catch ブロック 32 e1.printStackTrace(); 33 } 34 return; 35 } 36 37 // ファイルへ出力 38 try { 39 outputWorkbook.write(out); 40 } catch (IOException e2) { 41 // TODO 自動生成された catch ブロック 42 e2.printStackTrace(); 43 return; 44 }finally { 45 try { 46 outputWorkbook.close(); 47 outputWorkbook = null; 48 System.out.println("fileClose"); 49 } catch (IOException e3) { 50 // TODO 自動生成された catch ブロック 51 e3.printStackTrace(); 52 return; 53 } 54 } 55 return 0; 56 } 57 58

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

開発環境:Eclipse Version: 2021-03
使用言語:Java
サーバー:Tomcat9(Java11)
POI:5.10
Excel:Office Home&Business 2019

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

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

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

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

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

jimbe

2022/06/09 16:58

out の close は無いようですが、それが関係してたりはしないでしょうか。
hottan_stec

2022/06/10 07:53

コメントありがとうございます。 おっしゃる通りでした!
hottan_stec

2022/06/10 07:54

ベストアンサー差し上げたいので回答にコメントいただけませんか。
jimbe

2022/06/10 08:47

試していなかったので回答にしませんでした。 たまたまですので自己解決にしてください(^^;
hottan_stec

2022/06/10 08:52

承知しました。 ご協力ありがとうございました。
guest

回答1

0

自己解決

FileOutputStreamのoutをクローズ処理することで解決しました。

Java

1// ファイルへ出力 2 try { 3 outputWorkbook.write(out); 4 } catch (IOException e2) { 5 // TODO 自動生成された catch ブロック 6 e2.printStackTrace(); 7 return; 8 }finally { 9 try { 10 outputWorkbook.close(); 11 out.close(); 12 outputWorkbook = null; 13 System.out.println("fileClose"); 14 } catch (IOException e3) { 15 // TODO 自動生成された catch ブロック 16 e3.printStackTrace(); 17 return; 18 }

投稿2022/06/10 08:52

hottan_stec

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問