選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 

3.1 KiB

Excel export standard (FPSMS backend)

This document mirrors the visual and formatting rules used on the frontend for .xlsx exports.
It does not run automatically: backend code paths (JasperReports XLSX export, Apache POI, etc.) are separate from the Next.js xlsx-js-style pipeline. Apply these rules manually when implementing or changing server-side Excel so outputs stay consistent with the UI standard.

Frontend reference (implementation details):
FPSMS-frontend/src/app/(main)/chart/_components/EXCEL_EXPORT_STANDARD.md


When backend Excel is used

Typical cases:

  • JasperReports templates configured for XLSX output (JRXlsxExporter or similar).
  • Apache POI (XSSFWorkbook, SXSSFWorkbook) building sheets in Kotlin/Java services (e.g. production schedule export, BOM, item templates).

Reports that return JSON only and let the browser build the file (e.g. GRN rep-014) are not covered here — those follow the frontend doc.


Rules to mirror (parity with frontend)

Element Target
Header row Bold, black text; fill light grey #D9D9D9 (RGB); vertical center; for header text use horizontal center + wrap unless the column is numeric (see below).
Money / amount columns Excel number format #,##0.00 (thousands separator, 2 decimals). Right-align header and data.
Quantity columns Right-align header and data (no fixed decimal rule on frontend; match business need).
Column width At least readable for bilingual headers; frontend uses max(12, headerLength + 4) character width — approximate in POI with setColumnWidth.

Column detection (naming)

Align with frontend header keywords so exports feel the same:

  • Money: headers containing 金額, 單價, Amount, Unit Price, Total Amount (including bilingual labels like Amount / 金額).
  • Quantity: headers containing Qty, 數量, Demand.

Apache POI (sketch)

  • Create CellStyle for header: setFillForegroundColor (indexed or XSSFColor for #D9D9D9), setFillPattern, bold font, alignment.
  • Data format for money: DataFormat"#,##0.00" on numeric cells.
  • setAlignment(HorizontalAlignment.RIGHT) for amount/qty columns (and header cells in those columns if desired).

JasperReports

  • Apply styles in the report template (fonts, background, borders) and numeric pattern for amount fields equivalent to #,##0.00 where supported.
  • Verify in Excel output: Jasper’s XLSX styling capabilities differ slightly from POI — test the generated file.

Checklist for new backend Excel features

  1. Confirm whether the report is backend-only Excel or JSON + frontend Excel — only the latter uses the TypeScript standard automatically.
  2. For backend-only, apply header fill, money format, and alignment per the table above.
  3. Keep naming of column titles consistent with the keywords in Column detection when possible.

Aligned with frontend EXCEL_EXPORT_STANDARD.md (grey #D9D9D9, #,##0.00 for amounts, right-align numeric columns).