Excel数据导入Axapta中

Axapta提供了一些类用于操作Excel,这些类实际上是对Excel.Application这个COM对象的封装,由于Axapta不支持Unicode,对于含有汉字的Excel文件,可就惨了下列代码,如果Excel中是汉字的话,只能输出一半.

void GetDataFromExcel()
{
      SysExcelApplication app;
      SysExcelWorkSheets wss;
      SysExcelWorkSheet ws;
      SysExcelWorkbooks      wbs;
      SysExcelWorkBook       wb;
      Container c;
      str strValue;
      
int rowLine;
      
int colLine;
      ;

      app 
= SysExcelApplication::construct();
      wbs 
= app.workbooks();
      wbs.open(strFilePath,
0,true);
      wb 
= wbs.item(1);
      wss 
= wb.worksheets();
      ws  
= wss.itemFromName("ItemData");

      print ws.cells().item(
1,1).value().bStr();

      app.quit();
      pause;
}

不想花力气在COM和Excel文件之间做转换,想到Excel其实就是数据库,于是通过ODBCConnection来读取数据也不失为一个好办法.
static void readDataFromExcel(Args _args)
{
    LoginProperty lp;
    ODBCConnection od;
    Statement st;
    ResultSet rs;
    ;
    lp 
= new LoginProperty();
    lp.setDSN(
"ItemData");

    od 
= new ODBCConnection(lp);
    st 
= od.createStatement();
    rs  
= st.executeQuery("Select * from [ItemData$]");
    
while(rs.next())
    
{
        print rs.getString(
1);
    }

     pause;

}
这样就可以全读出来了.
原文地址:https://www.cnblogs.com/Farseer1215/p/538585.html