네!
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
}
읽고 → 생성 → 리스트 추가, 끝입니다.