以下是一些知识库文章,它们将帮助您回答有关在 64 位系统上使用 OfficeWriter 的问题:
ExcelWriter 版本 6.9.1(版本 3.9.1 或 OfficeWriter)中添加了 64 位支持。但是,这只适用于纯 .NET 类。我从您的代码中看到您正在使用纯 .NET ExcelTemplate 对象(在 SoftArtisans.OfficeWriter.ExcelWriter 命名空间中),但您还使用 ExcelApplication 对象的旧 COM 互操作版本(在 SoftArtisans.ExcelWriter 命名空间中)。ExcelWriter 的 COM 版本仅支持 32 位,已被弃用。
为了使用更新的 64 位兼容版本的 ExcelWriter,您需要对使用 ExcelApplication 对象的代码部分进行一些更改。
在 v9 及更高版本中,ExcelTemplate 对象的 API 也有一些非常小的更改(请参阅将 OfficeWriter v8 升级到 v9)。例如,您应该使用 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);