zoukankan      html  css  js  c++  java
  • AX2009使用NPOI导出EXCEL

    相信使用过MS office的API导出EXCEL的同学都有个非常不爽的体验,一个字,慢~~

    对,就是导出时那种龟慢的速度,再加上还的购买office的授权许可,很够蛋疼的,现在就介绍一种快速导出EXCEL的方法

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    NPOIPOI项目的.NET版本,是由Tony Qu(http://tonyqus.cnblogs.com/)等大侠基于POI开发的,可以从http://npoi.codeplex.com/下载到它的最新版本。它不使用Office COM组件(Microsoft.Office.Interop.XXX.dll),不需要安装Microsoft Office,支持Office 97-2003和Office2007的文件格式,功能非常强大,关键是人家还是开源的(用了人家的东西,顺便给人做下广告)

    至于和office excel导出对比我就不多测试了,给个链接

    http://www.cnblogs.com/ShyBoy/archive/2013/05/14/3077915.html

    现在就先介绍下在AX2009中使用NPOI导出office excel97-2003的文件格式

    1.下载NPOI的动态链接库DLL文件(有点废话)

    2.复制NPOI.DLL和NPOI.XML到AX客户端的安装目录BIN下,打开AX,添加NPOI.DLL的引用(导出97-2003格式只需要添加这个文件的引用就可以了)

    3.结束了,可以开始使用了,简单吧,1分钟内可以安装完成

    下面给个使用NPOI导出EXCEL的例子,我是使用MS的演示数据进行导出的,导出数据192行,175列,导出耗时3秒

    AX的其他版本因没有测试环境,暂时没有测试

     1 static void NPOI_ExportExcel2003(Args _args)
     2 {
     3     System.IO.FileStream                file;
     4     NPOI.HSSF.UserModel.HSSFWorkbook    workBook= new NPOI.HSSF.UserModel.HSSFWorkbook();
     5     NPOI.SS.UserModel.ISheet            sheet=workBook.CreateSheet("NPOISheet");
     6     NPOI.SS.UserModel.IRow              row;
     7     NPOI.SS.UserModel.ICell             cell;
     8     InventTable                         inventTable;
     9     SysDictTable                        dictTable = new SysDictTable(inventTable.TableId);
    10     SysDictField                        dictField;
    11     FieldId                             fieldId;
    12     int                                 i,j,k,t;
    13     str                                 fieldValue;
    14     Types                               a;
    15     ;
    16     t=timenow();
    17     while select inventTable
    18     {
    19         row=sheet.CreateRow(i);
    20         for(j=1;j<dictTable.fieldCnt();j++)
    21         {
    22             cell=row.CreateCell(j-1);
    23             fieldId=dictTable.fieldCnt2Id(j);
    24             a=typeof(inventTable.(fieldId));
    25             dictField=dictTable.fieldObject(fieldId);
    26             if(a!=types::BLOB && a!=types::Class && a!=types::Container && a!=types::void && a!=types::Record)
    27             {
    28                 for(k=1;k<=dictField.arraySize();k++)
    29                     fieldValue=queryvalue(inventTable.(fieldId2Ext(fieldId,k)));
    30 
    31             }
    32             cell.SetCellValue(fieldValue);
    33         }
    34         i++;
    35     }
    36 
    37     file =new System.IO.FileStream("D:\test.xls", System.IO.FileMode::Create,System.IO.FileAccess::ReadWrite);
    38     workBook.Write(file);
    39     file.Close();
    40     info("export2003 use time:"+int2str(timenow()-t)+"s");
    41 }
  • 相关阅读:
    洛谷.4717.[模板]快速沃尔什变换(FWT)
    BZOJ.4589.Hard Nim(FWT)
    BZOJ.1758.[WC2010]重建计划(分数规划 点分治 单调队列/长链剖分 线段树)
    BZOJ.4543.[POI2014]Hotel加强版(长链剖分 树形DP)
    Vijos.lxhgww的奇思妙想(k级祖先 长链剖分)
    Codeforces.741D.Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree 思路)
    Codeforces.600E.Lomsat gelral(dsu on tree)
    11.7 NOIP模拟赛
    11.5 正睿停课训练 Day16
    Maven与Nexus3.x环境构建详解
  • 原文地址:https://www.cnblogs.com/rumenren/p/3152079.html
Copyright © 2011-2022 走看看