2

X++ コードを使用して Excel ファイルから読み取る必要があります。以下は、大きな Excel ファイルの一部としてのコンテンツです。最初の列セルの公共部門に基づいて、リスト *_BillingCode、*_PSN、AccDistRuleAdvLedgerEntryExt などをフィルタリングするだけで済みます。

Public Sector SL1   *_BillingCode
Public Sector SL1   *_PSN
Public Sector SL1   AccDistRuleAdvLedgerEntryExt (Class)
Public Sector SL1   AccJourRuleAdvLedgerEntryExt 
Public Sector SL1   AccountantActivities
Public Sector SL1   AccountingManagerActivities
Public Sector SL1   AdvancedLedgerEntry (Class)
Public Sector SL1   AdvLedgerEntry (Prefix)
Public Sector SL1   AxAdvancedLedgerEntry (Prefix)
Public Sector SL1   AxdAdvancedLedgerEntry
Public Sector SL1   AxdCustomerTransaction (Class)
Public Sector SL1   BudgetAccountDetail (Prefix)

Google で検索したところ、Excel ファイルから読み取る次のコード行が見つかりました。

    static void ReadFromExcel(Args _args)
    {
    SysExcelApplication application;
    SysExcelWorkbooks workbooks;
    SysExcelWorkbook workbook;
    SysExcelWorksheets worksheets;
    SysExcelWorksheet worksheet; 
    SysExcelCells cells;
    COMVariantType type;
    int row;
    CustAccount account;
    CustName name;
    #define.Filename('C:\\X++ Ownership.xls')
    ;
    application = SysExcelApplication::construct();
    workbooks = application.workbooks();
    try
    {
    workbooks.open(#Filename);
    }
    catch (Exception::Error)
    {
    throw error("File cannot be opened.");
    }
    workbook = workbooks.item(1);
    worksheets = workbook.worksheets();
    worksheet = worksheets.itemFromNum(1);
    cells = worksheet.cells();
    do
    {
    row++;
    account = cells.item(row, 1).value().bStr();
    name = cells.item(row, 2).value().bStr();
    info(strfmt('%1 - %2', account, name));
    type = cells.item(row+1, 1).value().variantType();
    }
    while (type != COMVariantType::VT_EMPTY);
    application.quit();
    }

私の要件を満たすために、上記のコードをどのように利用できるかを理解するのに時間がかかります。あなたの助けに感謝します。

4

1 に答える 1

2

Excel ファイルを読み取るためのより良い方法があります。Axaptapediaを参照してください(ちなみに私は著者です)。

于 2012-08-29T10:24:15.713 に答える