博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AX2009使用Microsoft.Dynamics.AX.Fim导出EXCEL
阅读量:5247 次
发布时间:2019-06-14

本文共 2680 字,大约阅读时间需要 8 分钟。

最近老是跟Excel过不去了,刚整完NPOI,在捣鼓AX2012时发现系统的一份财务报表是导出Excel的,而且这份报表导出Excel的方法不是使用Office的COM组件,经过代码研究,这份报表使用的是AX2012新增的一个链接库

在AX2012中自己写了个Job,测试一下用这个Dll导出Excel试试

static void spreadsheets(Args _args){    FileName                                                filename;    Microsoft.Dynamics.AX.Fim.Spreadsheets.Spreadsheet      spreadsheets;    Microsoft.Dynamics.AX.Fim.Spreadsheets.ColumnProperties columnProperties;    Microsoft.Dynamics.AX.Fim.Spreadsheets.CellProperties   cellProperties;    ;    filename=@"D:\test1.xlsx";    new FileIOPermission(filename, "rw").assert();    spreadsheets    = new Microsoft.Dynamics.AX.Fim.Spreadsheets.Spreadsheet();    columnProperties= new Microsoft.Dynamics.AX.Fim.Spreadsheets.ColumnProperties();    cellProperties  = new Microsoft.Dynamics.AX.Fim.Spreadsheets.CellProperties();    if(spreadsheets.CreateSpreadsheet(filename))    {        columnProperties.set_Width(10);        spreadsheets.InstantiateColumn(columnProperties);        cellProperties.set_FontSize(Microsoft.Dynamics.AX.Fim.Spreadsheets.CellFontSize::Size9);        cellProperties.set_Bold(true);        cellProperties.set_BorderBottom(Microsoft.Dynamics.AX.Fim.Spreadsheets.CellBottomBorderFormat::Thin);        spreadsheets.AddStringCellToWorkbook("A",cellProperties);        spreadsheets.AddStringCellToWorkbook("B",cellProperties);        spreadsheets.AddStringCellToWorkbook("C",cellProperties);        spreadsheets.AddStringCellToWorkbook("D",cellProperties);        spreadsheets.MoveToNextRowInWorkbook();        spreadsheets.AddStringCellToWorkbook("A1",cellProperties);        spreadsheets.AddStringCellToWorkbook("B1",cellProperties);        spreadsheets.AddStringCellToWorkbook("C1",cellProperties);        spreadsheets.AddStringCellToWorkbook("D1",cellProperties);        spreadsheets.WriteFile();        spreadsheets.OpenExcelSpreadsheet();        spreadsheets.Dispose();        info("Done!");    }}

正常导出。

 

既然是通过Dll来导出Excel,那就是试将这个Dll移植到AX2009上试试,在AX2012的Client安装目录Bin文件夹中找到这个文件,复制这个文件到AX2009的Client安装目录Bin文件夹中,然后在AX2009中添加这个Dll文件的引用

将在AX2012测试的Job也移植到AX2009上,编译完成

运行,没有产生Excel文件!

是什么原因呢?

跟踪一下

这个Job在运行到if(spreadsheets.CreateSpreadsheet(filename))这句时返回了False

奇怪了,在AX2012里面正常运行,移植过来就运行不了了。。

既然在AX2009里面找不到原因,那就换个思路,将这个Dll放到C#里面试试

也同样写了个小测试程序

编译也正常

运行就出错了,也是CreateSpreadsheet()这个方法出错,不过这回有显示错误内容了

少了DocumentFormat.OpenXML这个程序集,经过一番查询,原来是需要安装OpenXMLSDK

下载了这个安装包后,安装完再运行就正常了

原来这个Dll链接库只是个马甲而已,真正起作用的是OpenXMLSDK,这个Dll的作用是将一些OpenXMLSDK操作Exce的l功能简单封装一下,方便在AX中调用而已

经过测试,这个Dll的功能只能满足一般的导出数据,设置一些简单的格式和页面设置,如果要设置合并单元格之类的就做不了

看来这个Dll也只是微软做出来的一个半成品而已,用来代替Npoi好像还不是不行

但是用来做数据导出还是足够的。

 

另外经过测试,这货最多只支持26列(⊙﹏⊙)b

难怪2012财务报表最多支持25列~~

 

转载于:https://www.cnblogs.com/rumenren/p/3502248.html

你可能感兴趣的文章
如何在vue单页应用中使用百度地图
查看>>
Springboot使用步骤
查看>>
Spring属性注入
查看>>
Springboot-配置文件
查看>>
Springboot-日志框架
查看>>
P1192-台阶问题
查看>>
一、使用pip安装Python包
查看>>
spring与quartz整合
查看>>
Kattis之旅——Eight Queens
查看>>
3.PHP 教程_PHP 语法
查看>>
Duilib扩展《01》— 双击、右键消息扩展
查看>>
利用Fiddler拦截接口请求并篡改数据
查看>>
python习题:unittest参数化-数据从文件或excel中读取
查看>>
在工程中要加入新的错误弹出方法
查看>>
PS 滤镜— — sparkle 效果
查看>>
网站产品设计
查看>>
代理ARP
查看>>
go 学习笔记(4) ---项目结构
查看>>
java中静态代码块的用法 static用法详解
查看>>
Java线程面试题
查看>>