summaryrefslogtreecommitdiff
path: root/lib/items-ship/table/item-excel-template.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/items-ship/table/item-excel-template.tsx')
-rw-r--r--lib/items-ship/table/item-excel-template.tsx122
1 files changed, 0 insertions, 122 deletions
diff --git a/lib/items-ship/table/item-excel-template.tsx b/lib/items-ship/table/item-excel-template.tsx
deleted file mode 100644
index 127a1dea..00000000
--- a/lib/items-ship/table/item-excel-template.tsx
+++ /dev/null
@@ -1,122 +0,0 @@
-import * as ExcelJS from 'exceljs';
-import { saveAs } from "file-saver";
-
-const SHIP_TYPES = ['A-MAX', 'S-MAX', 'LNGC', 'VLCC', 'CONT'] as const;
-
-/**
- * 조선 아이템 데이터 가져오기를 위한 Excel 템플릿 파일 생성 및 다운로드
- */
-export async function exportItemTemplate() {
- // 워크북 생성
- const workbook = new ExcelJS.Workbook();
- workbook.creator = 'Shipbuilding Item Management System';
- workbook.created = new Date();
-
- // 워크시트 생성
- const worksheet = workbook.addWorksheet('조선 아이템');
-
- // 컬럼 헤더 정의 및 스타일 적용
- worksheet.columns = [
- { header: '아이템 코드', key: 'itemCode', width: 15 },
- { header: '아이템 명', key: 'itemName', width: 30 },
- { header: '기능(공종)', key: 'workType', width: 15 },
- { header: '설명', key: 'description', width: 50 },
- ...SHIP_TYPES.map(type => ({
- header: type,
- key: type,
- width: 10
- }))
- ];
-
- // 헤더 스타일 적용
- const headerRow = worksheet.getRow(1);
- headerRow.font = { bold: true };
- headerRow.fill = {
- type: 'pattern',
- pattern: 'solid',
- fgColor: { argb: 'FFE0E0E0' }
- };
- headerRow.alignment = { vertical: 'middle', horizontal: 'center' };
-
- // 테두리 스타일 적용
- headerRow.eachCell((cell) => {
- cell.border = {
- top: { style: 'thin' },
- left: { style: 'thin' },
- bottom: { style: 'thin' },
- right: { style: 'thin' }
- };
- });
-
- // 샘플 데이터 추가
- const sampleData = [
- {
- itemCode: 'BG0001',
- itemName: '샘플 아이템 1',
- workType: '기장',
- description: '이것은 샘플 아이템 1의 설명입니다.',
- 'A-MAX': 'O',
- 'S-MAX': 'O',
- 'LNGC': 'O',
- 'VLCC': 'X',
- 'CONT': 'X'
- },
- {
- itemCode: 'BG0002',
- itemName: '샘플 아이템 2',
- workType: '전장',
- description: '이것은 샘플 아이템 2의 설명입니다.',
- 'A-MAX': 'O',
- 'S-MAX': 'X',
- 'LNGC': 'O',
- 'VLCC': 'O',
- 'CONT': 'X'
- }
- ];
-
- // 데이터 행 추가
- sampleData.forEach(item => {
- worksheet.addRow(item);
- });
-
- // 데이터 행 스타일 적용
- worksheet.eachRow((row, rowNumber) => {
- if (rowNumber > 1) { // 헤더를 제외한 데이터 행
- row.eachCell((cell) => {
- cell.border = {
- top: { style: 'thin' },
- left: { style: 'thin' },
- bottom: { style: 'thin' },
- right: { style: 'thin' }
- };
- });
- }
- });
-
- // 워크시트 보호 (선택적)
- worksheet.protect('', {
- selectLockedCells: true,
- selectUnlockedCells: true,
- formatColumns: true,
- formatRows: true,
- insertColumns: false,
- insertRows: true,
- insertHyperlinks: false,
- deleteColumns: false,
- deleteRows: true,
- sort: true,
- autoFilter: true,
- pivotTables: false
- });
-
- try {
- // 워크북을 Blob으로 변환
- const buffer = await workbook.xlsx.writeBuffer();
- const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
- saveAs(blob, 'shipbuilding-item-template.xlsx');
- return true;
- } catch (error) {
- console.error('Excel 템플릿 생성 오류:', error);
- throw error;
- }
-} \ No newline at end of file