关于直接用 HTML 导出 Excel 的单元格边框问题

红薯 发布于 2009/09/03 12:29
阅读 3K+
收藏 2

如果一个HTML中只有一个表格,那我们可以直接将这个html文件改名为 xls ,然后用excel打开。或者在Web项目中直接将HTML的 content-type 设置为 application/msexcel ,从而生成 EXCEL 的文档。

 
但是有一个缺陷是生成的excel文档中的单元格,如果没有数据就没有边框,为了使生成的EXCEL文档跟在 Excel 中创建的文档一致,我们可以通过在 html 文档中的 head 节点 加入如下内容即可:
 
<!--[if gte mso 9]><xml>
 <x:ExcelWorkbook>
  <x:ExcelWorksheets>
   <x:ExcelWorksheet>
    <x:Name>Sheet1</x:Name>
    <x:WorksheetOptions>
     <x:DefaultRowHeight>285</x:DefaultRowHeight>
     <x:Selected/>
     <x:Panes>
      <x:Pane>
       <x:Number>3</x:Number>
       <x:ActiveRow>3</x:ActiveRow>
       <x:ActiveCol>2</x:ActiveCol>
      </x:Pane>
     </x:Panes>
     <x:ProtectContents>False</x:ProtectContents>
     <x:ProtectObjects>False</x:ProtectObjects>
     <x:ProtectScenarios>False</x:ProtectScenarios>
    </x:WorksheetOptions>
   </x:ExcelWorksheet>
   <x:ExcelWorksheet>
    <x:Name>Sheet2</x:Name>
    <x:WorksheetOptions>
     <x:DefaultRowHeight>285</x:DefaultRowHeight>
     <x:ProtectContents>False</x:ProtectContents>
     <x:ProtectObjects>False</x:ProtectObjects>
     <x:ProtectScenarios>False</x:ProtectScenarios>
    </x:WorksheetOptions>
   </x:ExcelWorksheet>
   <x:ExcelWorksheet>
    <x:Name>Sheet3</x:Name>
    <x:WorksheetOptions>
     <x:DefaultRowHeight>285</x:DefaultRowHeight>
     <x:ProtectContents>False</x:ProtectContents>
     <x:ProtectObjects>False</x:ProtectObjects>
     <x:ProtectScenarios>False</x:ProtectScenarios>
    </x:WorksheetOptions>
   </x:ExcelWorksheet>
  </x:ExcelWorksheets>
  <x:WindowHeight>9600</x:WindowHeight>
  <x:WindowWidth>15075</x:WindowWidth>
  <x:WindowTopX>480</x:WindowTopX>
  <x:WindowTopY>90</x:WindowTopY>
  <x:ProtectStructure>False</x:ProtectStructure>
  <x:ProtectWindows>False</x:ProtectWindows>
 </x:ExcelWorkbook>
</xml><![endif]-->
 
通过这种方法还可以定义Excel文档底部的Sheet列表,上述的代码中有三个 Sheet ,可以干掉其中两个,并进行改名就可以定义底部 Sheet 列表了。
 
Enjoy it!
红薯
 

 

加载中
0
黄平俊
黄平俊

必须在html加入以下声明才能起效哦~~~
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">

0
黄平俊
黄平俊

当单元格是数值时,如:100000000000000000000,导出的Excel显示的是科学计数法,那如何转换成字符串呢?请下以下方法:

在样式表里添加:

.style0
    {mso-number-format:General;
    text-align:general;
    vertical-align:bottom;
    white-space:nowrap;
    mso-rotate:0;
    mso-background-source:auto;
    mso-pattern:auto;
    color:windowtext;
    font-size:12.0pt;
    font-weight:400;
    font-style:normal;
    text-decoration:none;
    font-family:宋体;
    mso-generic-font-family:auto;
    mso-font-charset:134;
    border:none;
    mso-protection:locked visible;
    mso-style-name:常规;
    mso-style-id:0;}
td{mso-style-parent:style0;
    mso-number-format:"\@";  //设置其数值为默认字符串
}

0
返回顶部
顶部