如何从Excel文件中读取?

时间:2012-08-29 09:47:03

标签: x++ axapta

我必须使用X ++代码从Excel文件中读取。 Bellow是一些内容,是大型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();
    }

我需要时间来了解如何利用上述代码,以满足我的要求。我很感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

有更好的方法来阅读Excel文件,请参阅Axaptapedia(顺便说一下,我是作者)。