需要在手动创建的Excel文件中手动设置分页符

时间:2014-11-21 16:36:29

标签: objective-c xml excel spreadsheetml

我正在从我编写的iOS应用程序中手动创建Excel文件。它只是吐出一张附有Excel文件扩展名的XML表,它在Excel中打开而没有问题。

问题是该文件有5列。无论出于何种原因 - Excel 始终将分页符放在第4列之后。

我正在努力让我的最终用户尽可能简化流程 - 所以他们只需按下按钮然后打印此应用创建的工作表 - 但是现在他们必须首先进入分页预览并调整分页。我想通过手动删除分页符或将其移动到内容的末尾(第5列)来消除它。

数据绝不是“太宽”或需要分页,这就是为什么我迷失了为什么要创建它们的原因!

我的XML文件在创建后看起来像这样:

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
  <Author>Me</Author>
  <LastAuthor>template</LastAuthor>
  <Created>2014-11-21T16:11:02Z</Created>
  <Version>14.00</Version>
 </DocumentProperties>
 <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
  <AllowPNG/>
 </OfficeDocumentSettings>
 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
  <WindowHeight>9375</WindowHeight>
  <WindowWidth>9705</WindowWidth>
  <WindowTopX>270</WindowTopX>
  <WindowTopY>615</WindowTopY>
  <ProtectStructure>False</ProtectStructure>
  <ProtectWindows>False</ProtectWindows>
 </ExcelWorkbook>
 <Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
  <Style ss:ID="s62">
   <Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/>
   <Borders>
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
   </Borders>
   <Font ss:FontName="Arial" ss:Bold="1"/>
   <Interior ss:Color="#C0C0C0" ss:Pattern="Solid"/>
   <NumberFormat/>
   <Protection/>
  </Style>
  <Style ss:ID="s63">
   <Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/>
   <Borders>
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
   </Borders>
   <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
  <Style ss:ID="s64">
   <Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="Arial" ss:Bold="1"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
  <Style ss:ID="s65">
   <Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="Arial" ss:Bold="1"/>
   <Interior/>
   <NumberFormat ss:Format="&quot;$&quot;#,##0.00"/>
   <Protection/>
  </Style>
  <Style ss:ID="s66">
   <Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
 </Styles>
 <Worksheet ss:Name="54Mileage">
  <Table ss:ExpandedColumnCount="5" ss:ExpandedRowCount="52" x:FullColumns="1"
   x:FullRows="1" ss:DefaultColumnWidth="117" ss:DefaultRowHeight="15">
   <Column ss:Width="99.75"/>
   <Column ss:Width="95.25" ss:Span="3"/>
   <Row>
    <Cell><Data ss:Type="String">Person Making Claim:</Data></Cell>
    <Cell><Data ss:Type="String">XXXXXX XXXXXXXXX</Data></Cell>
    <Cell><Data ss:Type="String"></Data></Cell>
    <Cell><Data ss:Type="String">Signature: </Data></Cell>
    <Cell><Data ss:Type="String"></Data></Cell>
   </Row>
   <Row ss:Index="3">
    <Cell><Data ss:Type="String">Month/Year:</Data></Cell>
    <Cell><Data ss:Type="String">November 2014</Data></Cell>
    <Cell><Data ss:Type="String"></Data></Cell>
    <Cell><Data ss:Type="String">Account Code:</Data></Cell>
   </Row>
   <Row ss:Index="5">
    <Cell><Data ss:Type="String">School:</Data></Cell>
    <Cell><Data ss:Type="String">XXXXXX</Data></Cell>
    <Cell><Data ss:Type="String"></Data></Cell>
    <Cell><Data ss:Type="String">Home Address:</Data></Cell>
    <Cell><Data ss:Type="String">XXXXXXXXXX</Data></Cell>
   </Row>
   <Row ss:Index="7">
    <Cell ss:StyleID="s62"><Data ss:Type="String">Date</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">From</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">To</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">Number Of Miles</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">Reason For Trip</Data></Cell>
   </Row>
   <Row>
    <Cell ss:StyleID="s63"><Data ss:Type="String">11/03/2014</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Hanover</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Einstein</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="Number">2.1</Data></Cell>
   </Row>
   <Row>
    <Cell ss:StyleID="s63"><Data ss:Type="String">11/20/2014</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Hale</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Fox</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="Number">2</Data></Cell>
   </Row>
   <Row ss:Index="50">
    <Cell ss:StyleID="s64"><Data ss:Type="String">Total Miles:</Data></Cell>
    <Cell ss:StyleID="s64" ss:Formula="=SUM(R[-42]C[2]:R[-2]C[2])"><Data
      ss:Type="Number">112.90000000000002</Data></Cell>
    <Cell ss:StyleID="s64"><Data ss:Type="String">@0.56</Data></Cell>
    <Cell ss:StyleID="s65" ss:Formula="=RC[-2]*0.56"><Data ss:Type="Number">63.224000000000018</Data></Cell>
   </Row>
   <Row ss:Index="52">
    <Cell ss:StyleID="s66"><Data ss:Type="String">Approved By (signature):</Data></Cell>
    <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
    <Cell ss:StyleID="s66"><Data ss:Type="String"></Data></Cell>
    <Cell ss:StyleID="s66"><Data ss:Type="String">Date:</Data></Cell>
   </Row>
  </Table>
  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
   <Print>
    <ValidPrinterInfo/>
    <HorizontalResolution>600</HorizontalResolution>
    <VerticalResolution>600</VerticalResolution>
   </Print>
   <ShowPageBreakZoom/>
   <Selected/>
   <ProtectObjects>False</ProtectObjects>
   <ProtectScenarios>False</ProtectScenarios>
  </WorksheetOptions>
 </Worksheet>
</Workbook>

我是否可以手动输入XML行以编程方式调整分页符?或者这是我的用户总是必须采取的一步?

2 个答案:

答案 0 :(得分:1)

rowBreaks =水平分页; colBreaks =垂直分页

brk id = 1表示在第2行中插入了分页符

<rowBreaks count="1" manualBreakCount="1">
    <brk id="1" max="16383" man="1" />
</rowBreaks>
<colBreaks count="1" manualBreakCount="1">
    <brk id="1" max="1048575" man="1" />
</colBreaks>

取自this article

答案 1 :(得分:1)

我发现我必须指定打印设置才能手动设置分页 - 只使用一些特定于Excel的xml设置分页。

以下是我如何手动设置分页功能:

<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
   <Print>
    <ValidPrinterInfo/>
    <HorizontalResolution>600</HorizontalResolution>
    <VerticalResolution>600</VerticalResolution>
   </Print>
  </WorksheetOptions>
  <PageBreaks xmlns="urn:schemas-microsoft-com:office:excel">
   <ColBreaks>
    <ColBreak>
     <Column>5</Column>
    </ColBreak>
   </ColBreaks>
  </PageBreaks>

没有&#39;工作表选项的第一部分&#39;以及水平和垂直分辨率 - 分页符号不会占用。那些必须才能手动设置分页。