如何把服务器端生成的一个excel以链接的方式给客户端.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把服务器端生成的一个excel以链接的方式给客户端.相关的知识,希望对你有一定的参考价值。

用poi这个第三方包实现,
具体流程是:页面有一个a标签,value为下载文档,
当点击这个页面的时候请求到一个servlet,请问怎么返回一个excel给客户 或者说一个下载地址.
在java中生成的hssfworkbook对象怎样在用户浏览器呈现,而不需弹出下载框?

a标签点击请求后,在服务端根据excel对应的数据 利用poi生成一个workbook对象,
然后
OutputStream os = null;
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet");
response.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode("供应商信息"+new Date().toString(), "UTF-8") + ".xslx"); //以下载形式,如果是直接在线打开
// response.setHeader("Content-Disposition","inline;filename=" ......
//中文文件名请适当转码,后缀名根据创建workbook时的版本决定(2003-HSSFWorkbook-.xls;2007-XSSFWorkbook-.xlsx)
os = response.getOutputStream();
workbook.write(os);
response.flushBuffer();
(io流的关闭和io异常扑捉自行处理,poi生成excel的过程参照poi文档,无非就是sheet,row,cell的操作)
参考技术A 我想实现的功能是:在B/S中实现在客户端浏览带有创建DLL控件对象的ASP页面时,服务器端能够形成相应的统计好了的Excel文件,并且把该Excel文件提供给客户端下载/浏览,而服务器端的Excel进程能够正常结束。
现在,我用VB做了一个DLL控件,该DLL的实现过程是:
引用Excel的Active X控件,采用Server.CreateObject( "Excel.Appliction ")……这些方法来的。
然后在ASP页面中创建该DLL对象,传递动态的记录集参数
现在,在WEB服务器端注册该组件后,在客户端浏览带有创建该DLL控件对象的ASP页面时,服务器端能够形成相应的Excel文件,此时本来希望能够下载/浏览该Excel文件的客户端却提示,该Excel文件正在使用中。我不知道该怎样才能把该Excel文件提供给客户端下载/浏览,并且使服务器端该Excel进程能够正常结束?
我没有直接在ASP网页中引用Excel的Active X控件,采用Server.CreateObject( "Excel.Appliction ")……这些方法,那样好象也只是在服务器端形成相应的Excel文件,而且好象更不能正常结束服务器端的Excel进程;好象还可以利用OWC来生产相应的Excel文件,不过对这方面我不熟。

如何使用 vb.net 以编程方式对 Excel 中的列进行排序?

【中文标题】如何使用 vb.net 以编程方式对 Excel 中的列进行排序?【英文标题】:How to sort columns in Excel programmatically using vb.net? 【发布时间】:2010-10-08 07:50:33 【问题描述】:

我们正在生成一个 Excel 报告,我们需要在保存文件之前以编程方式对数据进行排序。

是否可以使用 vb.net 以编程方式对 Excel 文件的特定列进行排序?

根据您的建议,为了生成对特定列进行排序的 excel 报告,我刚刚实现了如下逻辑..

Dim MyRange As Excel.Range
  gobjExcelReportSheet.Activate()
      MyRange = gobjExcelReportSheet.Range("A8", "L8")
      MyRange.Select()
      MyRange.Sort(Key1:=MyRange.Range("L8"), _
                   Order1:=XlSortOrder.xlAscending, _
                   Header:=XlYesNoGuess.xlGuess, _
                   MatchCase:=False, _
                   Orientation:=XlSortOrientation.xlSortColumns)

我在保存文件之前尝试了这个逻辑,甚至在保存文件之后,但它没有给出任何结果,即排序结果,甚至我没有收到任何错误。

但是下面的代码可以工作......

gobjExcelReportSheet.Application.Selection.Autofilter()

但是没有以编程方式排序的选项。

请帮帮我...

谢谢!

【问题讨论】:

报告是使用 Office 互操作程序集生成的吗?如果你给出你正在做什么的代码示例,你就更有可能得到有价值的回应。 【参考方案1】:

假设您使用的是互操作程序集,我就是这样做的:

Dim myWorkSheet As Excel.Worksheet = myWorkbook.Worksheets(aSheetName)
myWorkSheet.Activate()
Dim myRange As Excel.Range

myRange = myWorkSheet.Range("A1", "L10")
myRange.Select()


myRange.Sort(Key1:=myRange.Range("D1"), _
                        Order1:=Excel.XlSortOrder.xlAscending, _
                        Orientation:=Excel.XlSortOrientation.xlSortColumns)

基本上你需要选择一个范围(在本例中为A1:L10,然后选择按某一列(D)对其进行排序。

【讨论】:

我已经实现了这个,但是我得到了预期的结果,甚至没有得到任何错误。我需要做任何其他设置吗?请建议。谢谢。 我认为你的意思是你没有得到预期的结果?如果是这样,那么我们需要更多的信息。请编辑您的问题,显示您到目前为止所做的工作。 大家好,现在它使用以下代码.... MyRange.Range("A8").Sort(Key1:=MyRange.Range("L8"), Order1:=XlSortOrder.xlAscending , Header:=XlYesNoGuess.xlGuess, MatchCase:=False, Orientation:=XlSortOrientation.xlSortColumns) 以及上面提到的其他行。谢谢。 好。那么,赞成和/或接受的答案(提示,单击勾号)会很好吗? ;) 谢谢。这与代表无关,它可以帮助每个人知道它是否是正确的答案。

以上是关于如何把服务器端生成的一个excel以链接的方式给客户端.的主要内容,如果未能解决你的问题,请参考以下文章

(4)优化TCP编写 客服端上传图片,服务端给客服端发消息问好

文件如何生成下载链接?

如何通过 C# 以编程方式刷新 MS Access 链接表(使用 Excel 文件)?

Branch.io 在网页端生成链接,然后在应用程序中检索

django生成CSV文件

如何使用 vb.net 以编程方式对 Excel 中的列进行排序?