使用导出excel文件启用Excel自动筛选器

时间:2011-04-07 10:03:06

标签: asp.net export-to-excel

我编写了一个C#方法,它将导出到Excel 2007,一个包含html表的html文件。在Excel中打开导出的文件时,数据会完美呈现。

我想在上面的导出中添加一个额外的功能,这样当我在Excel中打开导出的数据时,自动过滤器会自动打开。

在导出过程中,我可以在C#中做什么,为所有列启用自动过滤?

3 个答案:

答案 0 :(得分:7)

如果要自动为通过以编程方式将html导出到.xls文件而创建的Excel文件中的标题行显示过滤器,请记住将以下2个功能添加到此文件中。

  • 将Excel的架构添加到html标记,如下面的列表中的粗体所示。准确添加这些模式。
  • 在每个标题列'td'标记中添加以下属性x:autofilter ='all',在下面的列表中也以粗体显示。

就是这样。然后你就完成了。它就这么简单。我从记事本中保存为“SampleInHTML.xls”并在Excel 2007和Excel 2010中进行测试的示例列表与在Excel中打开保存文件时自动显示的自动过滤完美配合,如下所示。

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">

<head></head>

<body >

<table >

 <tr >
  <td  width=130 x:autofilter='all'   
  >Age</td>
  <td  width=130 x:autofilter='all'
  >Salary</td>
 </tr>
 <tr height=18 style='height:13.2pt'>
  <td  >34</td>
  <td >2333</td>
 </tr>
 <tr >
  <td>55</td>
  <td>1222</td>
 </tr>

</table>

</body>

</html>

答案 1 :(得分:0)

要做这些事情,您必须直接针对电子表格对象进行操作。据我所知,这不能通过导出HTML表来完成。

我使用过Gembox.Spreadsheet,它可以做你想要的。但是,它不是免费的。

答案 2 :(得分:0)

嗯,我只能使用以下几点来实现这一点:

  1. namespace xmlns:x="urn:schemas-microsoft-com:office:excel"
  2. th的自动过滤属性 - x:autofilter='all'
  3. 以下是该示例的html。

    <html xmlns:x="urn:schemas-microsoft-com:office:excel">
    <head>
        <!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>Sheet1</x:Name><x:WorksheetOptions><x:Print><x:ValidPrinterInfo/></x:Print></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
        <table>
          <thead>
            <tr>
              <th x:autofilter='all'>Age</th>
              <th x:autofilter='all'>Salary</th>
            </tr>
         </thead>
         <tbody>
           <tr>
            <td>34</td>
            <td>2333</td>
           </tr>
         </tbody>
       </table>
    </head>
    </html>