-1

我在 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

但是新的参考是错误的......

任何可以帮助我,好吗?

提前致谢。

汉娜

4

2 回答 2

1

以下是一些知识库文章,它们将帮助您回答有关在 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);
于 2014-10-15T14:44:39.923 回答
0

API 最大的变化是从第 6 版到第 7 版,但实际上并没有那么糟糕。总体而言,SoftArtisans 通常在避免 API 更改方面做得很好。

我建议你去他们不支持的版本页面 http://www.officewriter.com/unsupoorted-versions-documentation

并下载旧文档。zip 文件中包含的 PDF 有一个从版本 6 到版本 7 的升级指南,它应该对您有很大帮助。

我认为 API 从 7 到 9 没有任何变化,除了添加的功能。

于 2014-10-15T14:16:20.223 回答