65.9K
CodeProject 正在变化。 阅读更多。
Home

DevExpress Document Server – 在没有 Microsoft Office 自动化的前提下自动化 Office

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (7投票s)

2013 年 9 月 10 日

CPOL

8分钟阅读

viewsIcon

105580

DevExpress Document Server – 在没有 Microsoft Office 自动化的前提下自动化 Office

DevExpress Document Server – 几年前(很久很久以前,在一个遥远的星系),我不得不接手一个项目,这个项目是我之前公司的同事留下的。不幸的是,她是在项目实施到一半的时候离开的。应用程序已经开发并安装,但有很多变更请求,我必须将这些变更请求开发成可行的解决方案。

最大的麻烦之一是,该应用程序执行了一些非常怪异的Office Word操作。以至于当公司升级到新版本的Office时,许多已安装的应用程序功能都损坏了。然而最近,我们需要为客户提供将数据导出到Excel的功能。唯一的问题是客户不会安装Microsoft Office。

我们显然不能使用Microsoft Office自动化,而DevExpress Document Server是解决这类问题的完美方案。

DevExpress Document Server – 电子表格

DevExpress Document Server是一个.Net库,您可以将其添加到C#、VB.Net或ASP.Net应用程序中,以自动化Excel和Word,而无需使用Microsoft Office自动化。添加此功能非常简单,我将在下面向您展示如何操作。安装DevExpress后,启动Visual Studio。创建一个控制台应用程序并添加以下引用。

  • DevExpress.Data
  • DevExpress.Office.Core
  • DevExpress.Spreadsheet.Core
  • DevExpress.Docs

将以下命名空间添加到您的应用程序。

DevExpress Document Server using namespace

导入上述命名空间将使Workbook类在您的应用程序中可用。

DevExpress Document Server Workbook Class

任何熟悉Excel的人都知道一个工作簿可以包含多个工作表,并且一个工作表可以包含多个单元格。

reference worksheet cells

您可以通过名称或索引引用工作表。对于本例,我们只使用其索引。

worksheet cell referenced

要将特定单元格设置为某个值,只需通过其位置引用它即可。因此,如果我们要设置单元格A1的文本,上面的代码将为您完成此操作。

devexpress document server save document

您添加的最后两行将保存电子表格并启动Excel。保存您的应用程序并运行您的控制台应用程序。

excel document generated and started

Excel以其全部荣耀启动,您将看到您设置为单元格A1的文本显示在您的电子表格中。您还可以指定其他数据类型,例如日期、布尔值和数值。您还可以在单元格中设置宽度、对齐方式、边框样式和颜色、背景颜色和字体。

spreadsheet output location

最后,前往您在代码中为电子表格设置的C:\Temp输出位置。在那里您将看到生成的电子表格。

DevExpress Document Server – 富文档转PDF 

我上面提到的项目要求之一是将文档创建为PDF格式。这是为了这些文档不容易被编辑。回想我们当时为了创建PDF而不得不如何“黑”代码,我现在对DevExpress Document Server使这个过程变得如此简单感到惊讶。要做到这一点,请按照以下步骤操作。

devexpress document server add document

首先将要转换的Word文档添加到您的控制台应用程序。确保将“复制到输出目录”属性设置为“始终复制”。接下来我们需要将以下引用添加到控制台应用程序(如果您正在继续前面的示例,只需添加DevExpress.RichEdit.Core引用)。

  • DevExpress.Docs
  • DevExpress.RichEdit.Core
  • DevExpress.Office.Core
  • DevExpress.Data

为了能够处理富文档,添加必需的using语句DevExpress.XtraRichEdit。

add reference to assembly

顺便提一下,您会注意到在我的代码示例中,添加的using是浅灰色的。这是因为安装了DevExpress CodeRush,它正在向我指示冗余命名空间。DevExpress.XtraRichEdit命名空间是冗余的,因为它尚未在代码中的任何地方使用。

redundant namespaces

将鼠标悬停在冗余命名空间上,CodeRush将弹出一个信息对话框。我非常喜欢CodeRush,但请允许我不要跑题。

complete code for pdf export

将上述代码添加到您的控制台应用程序中。代码是自解释的,但为了完整性,代码正在执行以下操作:添加DevExpress.XtraRichEdit命名空间公开了RichEditDocumentServer类。加载Word文档并创建一个流对象来创建一个名为“springcarnival.pdf”的文件。使用流对象将加载的Word文档导出为PDF。最后,运行Process.Start,它将使用关联的Adobe Reader应用程序启动文件。

devexpress document server export to pdf

您的Word文档完美地转换成PDF文件并在Adobe Reader中打开。这再简单不过了。

DevExpress Document Server – 压缩和存档生成

几年前,我不得不处理一个从MRP运行生成文档的应用程序。这些文档显然会非常大且数量众多。其中一个要求是压缩它们并适当处理这些文件。我当时真希望有DevExpress Document Server。让我们使用相同的控制台应用程序并添加以下引用。

  • DevExpress.Docs

鉴于我们已经添加了上述引用,我们显然不需要再次添加它。

devexpress document server compression

在我们开始使用压缩类之前,我们需要将DevExpress.Compression命名空间添加到我们的控制台应用程序中。您会注意到DevExpress.XtraRichEdit命名空间不再是灰色的。这是因为它在我们的代码中被引用了。

image folder to compress

我有一个文件夹,里面有奋进号航天飞机发射到太空的图片。让我们用它来演示DevExpress Document Server的压缩功能。

DevExpress Document Server Encryption Type

通过上面的代码示例,我们可以看到DevExpress Document Server为我们公开了几种加密类型。对于本例,我将只使用PkZip。

DevExpress Document Server compression code

代码的其余部分创建存档并为存档设置密码。创建存档后,将其保存到输出目录。

DevExpress Document Server zip file output

打开存档并单击文件时,会提示您输入密码。

archive file password prompt

由于文件已加密,如果您更改文件夹视图,甚至不会看到缩略图。

encrypted files no preview

这展示了我们如何使用DevExpress Document Server在几分钟内轻松创建加密存档文件。

Combining pdf export and archive

结合PDF文件创建和存档创建也非常容易。将我们之前创建的一些代码串联起来,我们就得到了一个很好的应用程序,它可以创建PDF文件并对其进行存档,包括加密。

DevExpress Document Server – 单位转换

DevExpress Document Server的另一个强大功能是单位转换。您有多少次不得不处理值转换,却没有标准的方法来做到这一点。要使用此功能,您需要添加DevExpress.UnitConversion命名空间。

devexpress document server unit conversion

这将公开单位转换类供您在代码中使用。

DevExpress Document Server Conversion Types

有几种单位类型可以转换。其中有一些有趣的类型。对于我们的示例,我们将使用温度。

DevExpress Document Server temperature conversion

DevExpress Document Server使这个过程变得非常简单。您可以简单地调用Units类的Temperature方法,并传递要转换的值,要转换的单位(摄氏度)和要转换的单位(华氏度)。实际上,一行代码就可以为您完成此操作。

DevExpress Document Server – 条形码生成

近年来非常流行的是QR码。说实话,您在名片或杂志上见过多少次?因此,能够为我们使用DevExpress Document Server创建的文档轻松生成一个是有意义的。

generate qr barcode

通过添加DevExpress.Barcodes命名空间来公开条形码类。

DevExpress Document Server QR Code Logic

生成二维码所需的代码比我们之前看的例子稍长,但并不复杂。我们正在创建一个Barcode类型的新对象,并将其符号设置为QR Code。然后我们设置与QR Code相关的颜色和其他属性,然后将QR Code保存为png。

QR Code Saved to png

二维码已保存到我们代码中指定位置的png文件中。

QR Code Scanned

我使用智能手机上的应用程序,直接从电脑屏幕扫描二维码。您可以看到应用程序提示我打开二维码中指定的URL。

QR Code Opens Website

点击“确定”将打开二维码中指定的URL。

DevExpress Document Server绝对是您如果开发软件需要强烈考虑购买的产品。DevExpress在开发此产品时充分考虑了开发人员的需求,使其非常容易集成到您的代码中。开发人员最不需要的就是为了使其正常工作而捣鼓代码。DevExpress认识到这一点,并创建了易于使用的高质量产品。DevExpress Document Server只是非常广泛的DevExpress产品系列的一小部分。请访问他们的网站,了解DevExpress能为您的应用程序做些什么。

重要披露:我收到了上述一个或多个产品或服务的免费试用,希望能在我博客中提及。无论如何,我只推荐我个人使用并认为我的读者会喜欢的产品或服务。我根据联邦贸易委员会16 CFR第255部分:“广告中认可和推荐的使用指南”披露此信息。

DevExpress Document Server – 无需Microsoft Office自动化即可自动化Office - CodeProject - 代码之家
© . All rights reserved.