Sleeper·2026년 2월 24일
네!
package dimension.actions;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.mendix.core.Core;
import com.mendix.systemwideinterfaces.core.IContext;
import com.mendix.systemwideinterfaces.core.IMendixObject;
import com.mendix.systemwideinterfaces.core.UserAction;

public class JA_Dimension_ImportCustomer extends UserAction<java.util.List<IMendixObject>>
{
	private final IMendixObject fileDocument;

	public JA_Dimension_ImportCustomer(
		IContext context,
		IMendixObject _fileDocument
	)
	{
		super(context);
		this.fileDocument = _fileDocument;
	}

	@java.lang.Override
	public java.util.List<IMendixObject> executeAction() throws Exception
	{
		// BEGIN USER CODE
		IContext ctx = this.getContext();
		List<IMendixObject> resultList = new ArrayList<>();

		try (InputStream is = Core.getFileDocumentContent(ctx, fileDocument);
			 Workbook wb = new XSSFWorkbook(is)) {

			Sheet sheet = wb.getSheet("Customer");
			if (sheet == null) {
				throw new Exception("Excel 파일에 'Customer' 시트가 없습니다.\n시트명을 확인해 주세요.");
			}
			if (sheet.getLastRowNum() < 1) {
				throw new Exception("'Customer' 시트가 비어 있습니다.");
			}

			DataFormatter formatter = new DataFormatter();

			for (int r = 1; r <= sheet.getLastRowNum(); r++) {
				Row row = sheet.getRow(r);
				if (row == null) continue;

				final String customerName    = safeCellValue(formatter, row.getCell(1));
				final String customerSynonym = safeCellValue(formatter, row.getCell(2));

				if (customerName == null) continue;

				IMendixObject cust = Core.instantiate(ctx, "Dimension.Customer");
				cust.setValue(ctx, "Name", customerName);
				cust.setValue(ctx, "Synonym", customerSynonym);
				cust.setValue(ctx, "isActive", Boolean.TRUE);
				resultList.add(cust);
			}

			Core.getLogger("ImportCustomerExcel")
				.info(String.format("Import finished – created:%d", resultList.size()));

			return resultList;

		} catch (Exception e) {
			Core.getLogger("ImportCustomerExcel").error("Error while importing Customer Excel", e);
			throw e;
		}
		// END USER CODE
	}

	private String safeCellValue(DataFormatter formatter, Cell cell) {
		if (cell == null) return null;
		String raw = formatter.formatCellValue(cell);
		if (raw == null) return null;
		String trimmed = raw.trim();
		if (trimmed.isEmpty()) return null;
		if ("empty".equalsIgnoreCase(trimmed)) return "empty";
		return trimmed;
	}

	@java.lang.Override
	public java.lang.String toString()
	{
		return "JA_Dimension_ImportCustomer";
	}

	// BEGIN EXTRA CODE
	// END EXTRA CODE
}
읽고 → 생성 → 리스트 추가, 끝입니다.

0개의 댓글