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

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

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

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

Q&A

解決済

2回答

5632閲覧

apache POI で、罫線を引きたい

kusogomitan

総合スコア17

Java

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

0グッド

0クリップ

投稿2020/10/29 02:57

編集2020/10/29 08:02

apache POIを使用して
見本
こちらの書類を作成したいのですが、罫線をまとめて複数のセルに引く方法と、
イメージ説明
こうなってしまう理由を教えてほしいです。

POITest.java public class POI {      ※import部分は省略 @SuppressWarnings("resource") public static void main(String[] args){ Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet(); Font font = wb.createFont(); font.setBold(true); sheet.setColumnWidth(0, 4096); sheet.setColumnWidth(1, 4096); Sheet sheet0 = wb.getSheetAt(0); sheet0.addMergedRegion(new CellRangeAddress(6, 7, 0, 1)); sheet0.addMergedRegion(new CellRangeAddress(6, 7, 2, 5)); CellStyle top = wb.createCellStyle(); top.setBorderTop(BorderStyle.MEDIUM); CellStyle left = wb.createCellStyle(); left.setBorderLeft(BorderStyle.MEDIUM); CellStyle bottom = wb.createCellStyle(); bottom.setBorderBottom(BorderStyle.MEDIUM); CellStyle right = wb.createCellStyle(); right.setBorderRight(BorderStyle.MEDIUM); Row row1 = sheet.createRow(1); Row row2 = sheet.createRow(2); Row row3 = sheet.createRow(3); Row row4 = sheet.createRow(4); Row row5 = sheet.createRow(5); Row row6 = sheet.createRow(6); Row row7 = sheet.createRow(7); Row row8 = sheet.createRow(8); Row row9 = sheet.createRow(9); Row row10 = sheet.createRow(10); Row row11 = sheet.createRow(11); Row row13 = sheet.createRow(13); Cell cell1_1 = row1.createCell(1); Cell cell3_0 = row3.createCell(0); Cell cell3_1 = row3.createCell(1); Cell cell3_2 = row3.createCell(2); Cell cell3_3 = row3.createCell(3); Cell cell3_4 = row3.createCell(4); Cell cell3_5 = row3.createCell(5); Cell cell3_6 = row3.createCell(6); Cell cell6_0 = row6.createCell(0); Cell cell6_2 = row6.createCell(2); Cell cell8_0 = row8.createCell(0); Cell cell8_1 = row8.createCell(1); Cell cell8_2 = row8.createCell(2); Cell cell8_3 = row8.createCell(3); Cell cell8_4 = row8.createCell(4); Cell cell9_0 = row9.createCell(0); Cell cell9_1 = row9.createCell(1); Cell cell9_3 = row9.createCell(3); Cell cell9_2 = row9.createCell(2); Cell cell9_4 = row9.createCell(4); Cell cell10_4 = row10.createCell(4); Cell cell11_4 = row11.createCell(4); Cell cell13_3 = row13.createCell(3); Cell cell13_4 = row13.createCell(4); cell1_1.setCellValue("旅費及び請求書(清算書)"); cell3_0.setCellStyle(top); cell3_0.setCellStyle(left); cell3_0.setCellValue("出張先名称"); cell3_1.setCellStyle(top); cell3_2.setCellStyle(top); cell3_2.setCellStyle(right); cell3_3.setCellValue("出張先所在地"); cell3_3.setCellStyle(top); cell3_3.setCellStyle(left); cell3_4.setCellStyle(top); cell3_5.setCellStyle(top); cell3_6.setCellStyle(top); cell3_6.setCellStyle(right); cell6_0.setCellValue("出張期間"); CellStyle style6_0 = wb.createCellStyle(); style6_0.setVerticalAlignment(VerticalAlignment.CENTER); style6_0.setAlignment(HorizontalAlignment.CENTER); cell6_0.setCellStyle(style6_0); cell6_2.setCellValue("1月6日 ~ 1月7日 迄(2日間)"); cell6_2.setCellStyle(style6_0); cell8_0.setCellValue("日付"); CellStyle style8_0 = wb.createCellStyle(); style8_0.setAlignment(HorizontalAlignment.CENTER); cell8_0.setCellStyle(style8_0); cell8_1.setCellValue("区間"); cell8_1.setCellStyle(style8_0); cell8_2.setCellValue("運賃"); cell8_2.setCellStyle(style8_0); cell8_3.setCellValue("宿泊"); cell8_3.setCellStyle(style8_0); cell8_4.setCellValue("計"); cell8_4.setCellStyle(style8_0); cell9_0.setCellValue("7月6日"); CellStyle style9_0 = wb.createCellStyle(); style9_0.setAlignment(HorizontalAlignment.RIGHT); cell9_0.setCellStyle(style9_0); cell9_1.setCellValue("A~B"); cell9_1.setCellStyle(style8_0); cell9_2.setCellValue("¥1.000"); CellStyle style9_2 = wb.createCellStyle(); style9_2.setAlignment(HorizontalAlignment.RIGHT); cell9_2.setCellStyle(style9_2); cell9_3.setCellValue("¥3.000"); cell9_3.setCellStyle(style9_2); cell9_4.setCellValue("¥3.000"); cell9_4.setCellStyle(style9_2); cell10_4.setCellValue("¥0"); cell10_4.setCellStyle(style9_2); cell11_4.setCellValue("¥0"); cell11_4.setCellStyle(style9_2); cell13_3.setCellValue("合計"); CellStyle style13_3 = wb.createCellStyle(); style13_3.setAlignment(HorizontalAlignment.LEFT); cell13_3.setCellStyle(style13_3); cell13_4.setCellValue("¥3.000"); cell13_4.setCellStyle(style9_2); FileOutputStream out = null; try{ out = new FileOutputStream("POITest.xls"); wb.write(out); }catch(IOException e){ System.out.println(e.toString()); }finally{ try { out.close(); }catch(IOException e){ System.out.println(e.toString()); } } } }

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/10/29 04:03

[apatch]ですよ。
退会済みユーザー

退会済みユーザー

2020/10/29 05:14

訂正、ありがとうございます。 (質問者さんに直してもらいたいとこ。。。)
guest

回答2

0

ベストアンサー

こうなってしまう理由を教えてほしいです。

コーディングした通りだからです。

タイトルが罫線なのでその部分だけ・・・。

隣接するセルも線を引かないと、後勝ちで消えてしまうかと思います。
セルの右に線を引くなら、隣のセルの左にも線を引くという風に。

書式設定をするなら、CellUtil#setCellStylePropertyCellUtil#setCellStylePropertiesを使いましょう。
createできる数に限りがあるので、同じ書式設定が複数できないように制御できます。

Class CellUtil

投稿2020/10/29 04:22

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

コメント不要
削除要求

投稿2020/11/11 02:59

user00

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問