要导出到 Excel 2007的客户端脚本

分享于 

11分钟阅读

Web开发

  繁體 雙語

table的内容

导出到 Excel

导出到Excel是业务用户请求的最重要的特性之一。 这个要求在报告世界中经常被观察到。 需求可以能是单击任何按钮/链接,并在处理服务器上的请求时打开一个带有客户机的Excel。 另一方面,要求是我们首先在客户端工具中将数据以期望格式显示给用户,比如 IE,然后单击任何链接/按钮,我们将这些数据导出到 Excel。

实际上,这不是一个文章或者代码段,但实际上尝试将解决方案放在一段时间内。 我使用客户端VBScript导出到Excel机制以导出DataGrid的数据。 客户端从 Office 2003升级到 Office 2007,而我的标准脚本停止工作时,问题就开始了。 这里我们将简要地了解服务器端和客户端导出到Excel的方法,然后重点将DataGrid数据导出到 Excel。

实现导出到Excel的方式。

根据需求,我们可以处理服务器上的请求并将响应发送回Excel数据,或者在任何用户事件中导出。 让我们对这两种方法进行简要的概述。

服务器端出口到 Excel Approach

在这种方法中,我们使用服务器端代码转换数据,并将excel发送给客户端。 有几种方法可以执行这里操作,例如:

  • 简单指定响应对象的ContentType属性以指定客户机可以预期的文件类型。 我们也可以指定文件名。 用户将获得Excel表中的数据。
  • 使用象oab这样的组件创建Excel对象,以期望的格式填充所需的数据并将对象发送到客户端。

如果你更感兴趣,点击这里查看微软的知识库文章( for )。

客户端出口到 Excel Approach

在这种方法中,我们首先将数据呈现在客户端的最终机器的IE 上,然后输出。 要注意的重要点是,客户端脚本只能在客户端机器安装了 MS Excel时将渲染数据导出到 Excel。 如果客户端计算机未安装 Excel,则应使用服务器端方法导出到 Excel。

使用客户端脚本,我们可以通过任何客户端脚本来使用ActiveX组件。 我们可以保证我们只导出用户已经审查的数据,甚至可以能在客户端处理。 对于这样的需求客户端导出最适合于 Excel,当我们使用客户端脚本将数据导出到Excel时。

在本文中,我们将只关注客户端脚本以导出到已经显示在 IE 中的datagrid/gridview数据。

输出到Excel的客户端脚本。

就像我们所讨论的,可以使用客户端脚本将呈现的表格数据导出到Excel中。 我们将使用VBScript来看到同样的效果。 我们需要在客户端机器上的Office 版本中使用两个不同的脚本。 如果客户端使用 Office 2003或者更早版本的Office,那么我们可以安全地使用第一个脚本。 但是如果客户机机器升级到 Office 2007,我们必须使用第二个脚本来实现相同的。

导出到Excel或者早期版本的脚本。

让我们先看看脚本服务我们的目的,然后我们将了解它的细节。 这里是相同的VBScript。

<scriptlanguage="vbscript"> Function ExportToExcel2003(objToExport)
 Dim sHTML, oExcel, oBook
 sHTML = document.all.item(objToExport).outerhtml
 Set oExcel = CreateObject("Excel.Application")
 Set oBook = oExcel.Workbooks.Add
 oBook.HTMLProject.HTMLProjectItems("Sheet1").Text = sHTML
 oBook.HTMLProject.RefreshDocument
 oExcel.Visible = true oExcel.UserControl = true End Function</script>

脚本 上面 非常简单,而且大多数人都必须在一个或者另一个应用程序中使用它。 在该脚本中,我们只需要提供在屏幕上呈现的HTML对象,并使用已经存在的Office 将它的导出到 Excel。 简言之,我们先创建一个 Excel.Application 对象,然后将工作簿添加到它。 然后,在工作簿的第一个工作表 换句话说,工作表中,将Excel应用程序可以识别的HTML内容放到。 Excel解析这个HTML并在"工作表"上呈现。 要注意的一点是,它不是Excel中的Excel二进制数据文件,它是Excel应用程序解析和呈现的HTML数据。

Office 不再支持 HTMLProject,并且我们的脚本提到会出现问题。 使用 Office 2007,我们在行中得到错误 oBook.HTMLProject.HTMLProjectItems("Sheet1").Text = sHTML 使用脚本错误消息"这里方法或者属性在这里版本的Excel中不再受支持。"。

在与这个问题相遇很多时间之后,我得到了一个相同的选择。 让我们来看看它。

导出到 Excel 2007的脚本

我们将在用户升级到 Office 2007时导出到Excel的脚本如下所示。 首先看看脚本,然后我们将看到它是如何为我们工作的。

<scriptlanguage="vbscript"> Function Export(objToExport) 
 ON ERROR RESUME NEXT 
 DIM sHTML, oExcel, fso, filePath 
 sHTML = document.all(objToExport).outerHTML 
 SET fso = CreateObject("Scripting.FileSystemObject") 
 filePath = fso.GetSpecialFolder(2) & "MyExportedExcel.xls" 
 fso.CreateTextFile(filePath).Write(sHTML) 
 DIM i 
 SET i = 0 
 DO WHILE err.number >0 
 err.Clear() 
 filePath = fso.GetSpecialFolder(2) & "MyExportedExcel" & i & ".xls" 
 i = i + 1 
 LOOP 
 SET oExcel = CreateObject("Excel.Application") 
 IF err.number>0 OR oExcel =NULL THEN 
msgbox("You need to have Excel Installed and Active-X Components Enabled on your System.") 
 EXIT FUNCTION 
 END IF 
 oExcel.Workbooks.open(filePath) 
 oExcel.Workbooks(1).WorkSheets(1).Name = "My Excel Data" 
 oExcel.Visible = true 
 Set fso = Nothing 
 End Function </script>

相信我没有看起来那么复杂。 让我们来看看我们在做什么。 简而言之,上面 代码创建一个文件名为 MyExportedExcel.xls的文件,并保存在 Windows的临时文件夹中,然后打开和服务到用户。 现在让我们详细了解这个脚本的重要代码部分。

  • fso = CreateObject("Scripting.FileSystemObject") 用于返回可以从它的读取或者写入的TextStream 对象。 点击这里了解更多细节。
  • fso.GetSpecialFolder(2) 获取临时文件夹的完整文件夹路径。 单击这里查看详细信息。
  • fso.CreateTextFile(filePath).Write(sHTML) 创建具有所需文件名的文件。 单击这里查看详细信息。
  • oExcel.Workbooks.open 打开指定的文件。 它需要打开文件的路径。
  • DO WHILE 循环。如果用户打开了一个文件实例,但仍然用于导出,则CreateTextFile错误。 为了避免这样的问题,我们首先看看是否可以创建和保存一个新文件;。 我们将名称的引用存储在变量 filepath 中,并在代码的后面部分中使用。 我们在循环中重复尝试,以确保即使用户打开了几个包含数字的实例,也不应错误。

这个机制也应该适用于以前版本的Excel。 这里脚本已经在机器早期拥有 Office 2003和更高版本升级为 Office 2007的机器上进行了测试。 强烈建议你在 Office 2007刚刚安装的所需计算机上测试脚本。

导出到 Excel 2007的解决方案的关键点

这个解决方案的关键点是带扩展. xls.的文件,如果我们提供了扩展名. xlsx,它将不会工作。 要测试这里选项,请尝试以下操作:

  • 使用以下内容创建一个简单的文本文件
<table>
 <tr>
 <td>A1</td><td>A2</td></tr> <tr> 
 <td>B1</td><td>B2</td></tr></table>
  • 按名称 Sample.xls 保存这里文件,并双击以在 Office 2007中打开。 你可以得到消息,选择是,然后它应该打开两行数据。
  • 现在将这里文件重命名为 Sample.xlsx,双击以在 Office 2007中打开。 错误消息文件格式或者文件扩展名无效,因这里无法打开。

包起来。

导出到Excel是非常常见的要求。 分析并查看服务器端或者客户端的方法是否符合你的要求。 我相信 上面 2007提到的脚本只是解决方案中的一个,可能会有更多的解决方案。 Excel脚本完全依赖于上面提到的关键点,完全依赖于在客户端机器的临时文件夹中保存文件,所以使用它时要小心。

请占用一些时间,并提供关于这篇文章的反馈。 你的几分钟可以帮助提高本文的质量。

如果有兴趣,点击这里查看我所有已经发表的文章。


EXP  SID  Excel  导出  Excel 2007  
相关文章