我在C#中维护一个使用ExcelWriter版本5的旧应用程序。明年我们将更新到64位,我正在搜索有关此升级的任何文档。 我只搜索了从版本6升级,他们说不支持旧版本。
现在,使用SAXW5NET.DLL,我做了:
using SoftArtisans.OfficeWriter.ExcelWriter;
using SoftArtisans.ExcelWriter;
SAExcelApplicationDotNet xla = new SAExcelApplicationDotNet(); ----> ERROR
ExcelTemplate xlt = new ExcelTemplate();
xlt.Open(templatepath);
然后我在xlt ...
中收取所有数据xlt.SetCellDataSource(....)
最后,我处理模板
xlt.Process();
我将它保存在我的对象“xla”
中xla = xlt.Save(); ---> ERROR
但是新的引用错了......
有人可以帮助我吗?
提前致谢。
汉娜
答案 0 :(得分:1)
以下是一些知识库文章,可帮助回答有关在64位系统上使用OfficeWriter的问题:
在ExcelWriter版本6.9.1(版本3.9.1或OfficeWriter)中添加了64位支持。但是,这仅适用于纯.NET类。我从您的代码中看到您使用的是纯.NET ExcelTemplate对象(在SoftArtisans.OfficeWriter.ExcelWriter命名空间中),但您还使用了ExcelApplication对象的旧版COM互操作版本(在SoftArtisans.ExcelWriter命名空间中)。 Excel版本的ExcelWriter仅具有32位支持,已被弃用。
为了使用较新的64位兼容版本的ExcelWriter,您需要对使用ExcelApplication对象的代码部分进行一些更改。
在v9及更高版本(See Upgrading OfficeWriter v8 to v9)中,ExcelTemplate对象的API也发生了一些非常小的变化。例如,您应该使用BindCellData()代替SetCellDataSource()方法。
迁移代码需要花费一些时间,但您将获得使用受支持的产品版本以及所有最新修补程序和新功能的好处,包括支持更新的OOXML文件格式(.xlsx和.xlsm )
以下是如果您使用当前版本的OfficeWriter时如何更改上述代码的示例:
using SoftArtisans.OfficeWriter.ExcelWriter;
ExcelApplication xla = new ExcelApplication();
ExcelTemplate xlt = new ExcelTemplate();
// open the template workbook with the ExcelTemplate object
xlt.Open(templatepath);
//set your datasources
xlt.BindCellData(....)
//populate the workbook
xlt.Process();
//pass the workbook in memory to the ExcelApplication object for post-processing
Workbook wb = xla.Open(xlt);
//manipulate workbook as desired and stream file to client machine
xla.Save(wb, Page.Response, outputfilename, false);
答案 1 :(得分:0)
API中最大的变化是从版本6到版本7,但实际上并没有那么糟糕。整体SoftArtisans通常非常适合避免API更改。
我建议你去他们不受支持的版本页面 http://www.officewriter.com/unsupoorted-versions-documentation
并下载旧文档。 zip文件中包含的PDF包含从版本6到版本7的升级指南,它可以为您提供很多帮助。
除了增加的功能之外,我认为API从7到9没有变化。