2012-08-29 94 views
2

我必须使用X ++代码从Excel文件中读取数据。贝娄是一些大型Excel文件的一部分。我只需要在第一列单元格的公共部门的基础上过滤列表* _BillingCode,* _PSN,AccDistRuleAdvLedgerEntryExt等。如何从Excel文件读取?

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) 

我在谷歌搜索我发现下面的代码行从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(); 
    } 

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

+0

你可以将文件保存为.CSV,如果有的话我可以帮你解决。 –

回答

2

有更好的方法来读取Excel文件,请参阅Axaptapedia(我是作者的方式)。