尝试通过xml在excel中设置页边距

时间:2011-02-16 14:39:42

标签: xml excel formatting xml-namespaces

我已经“继承”了一些将数据下载到Excel电子表格的代码。格式化html的相同表格正在生成Excel数据。

我正在尝试设置工作表的页边距。以下代码并没有真正做到这一点。我认为xml数据会被忽略。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns:x="urn:schemas-microsoft-com:office:excel">

<head id="Head1" runat="server">
    <title></title>
<style>
  @page 
    {
        mso-page-orientation:portrait;
    }
</style>

    <xml> 
         <x:ExcelWorkbook> 
          <x:ExcelWorksheets> 
           <x:ExcelWorksheet> 
                <x:Name>HoursReport</x:Name> 
                <x:WorksheetOptions>
                <x:Selected/>
                <x:FreezePanes/>
                <x:FrozenNoSplit/>
                <!--- Bottom row number of top pane. --->
                <x:SplitHorizontal>4</x:SplitHorizontal>
                <x:TopRowBottomPane>4</x:TopRowBottomPane>

                  <x:PageSetup>
                    <x:Header x:Margin="0.25"/>
                    <x:Footer x:Margin="0.25"/>
                    <x:PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
                   </x:PageSetup>

                 <x:FitToPage/> 
                 <x:Print> 
                  <x:FitHeight>99</x:FitHeight>
                  <x:ValidPrinterInfo/> 
                  <x:Scale>100</x:Scale> 
                  <HorizontalResolution>600</HorizontalResolution> 
                  <VerticalResolution>600</VerticalResolution> 
                 </x:Print> 
                 <x:Selected/> 
                    <x:ActivePane>2</x:ActivePane>
                 <x:ProtectContents>False</x:ProtectContents> 
                 <x:ProtectObjects>False</x:ProtectObjects> 
                 <x:ProtectScenarios>False</x:ProtectScenarios>
                </x:WorksheetOptions> 
           </x:ExcelWorksheet> 
          </x:ExcelWorksheets> 
          <x:ProtectStructure>False</x:ProtectStructure> 
          <x:ProtectWindows>False</x:ProtectWindows> 
         </x:ExcelWorkbook> 
         <x:ExcelName> 
          <x:Name>Print_Titles</x:Name> 
          <x:SheetIndex>1</x:SheetIndex>
          <x:Formula>='HoursReport'!$1:$4</x:Formula>
         </x:ExcelName> 
</xml>
</head>

我对这里的一切都是新手 - asp.net,c#,xml,excel ... :)我已经得到了其他excel命令工作 - 拆分和冻结窗格等但页面边距似乎不大做任何事。

那里的任何人可以理顺我吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

试图完成同样的事情,并且PageMargins标签似乎不起作用,使用CSS的工作是什么。

<style type="text/css">
<!--

@page {
margin:.0in .0in .0in .0in;
mso-header-margin:.0in;
mso-footer-margin:.0in;
mso-page-orientation:portrait;
}

@print {
margin:.0in .0in .0in .0in;
mso-header-margin:.0in;
mso-footer-margin:.0in;
mso-page-orientation:portrait;
}

-->
</style>

答案 1 :(得分:1)

<ss:Worksheet>
  <x:WorksheetOptions>
    <x:PageSetup>
      <x:PageMargins x:Bottom="1.5" x:Left=".25" x:Right=".25" x:Top="1.5" />
    </x:PageSetup>
  </x:WorksheetOptions>
</ss:Worksheet>

您的页面设置选项位于WorksheetOptions标记内。我在开始的Worksheet标记后面放了我的。它就像一个魅力。

答案 2 :(得分:0)

也许

<x:pageMargins x:left="0.7" x:right="0.7" x:top="0.75" x:bottom="0.75" x:header="0.3" x:footer="0.3" />

作为<x:ExcelWorksheet>元素中的子元素,而不是<x:PageSetup>元素

中的子元素