6

Is there any way to create an Excel file programmatically in iOS?

1

2 Answers 2

4

This is a strip down version of XML representation of XLS file, Just create an raw XML like this...and save it as XLS.

<?xml version="1.0"?>
<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">
  <Version>14.0</Version>
 </DocumentProperties>
 <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
  <AllowPNG/>
 </OfficeDocumentSettings>
 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
  <WindowHeight>11720</WindowHeight>
  <WindowWidth>25600</WindowWidth>
  <WindowTopX>0</WindowTopX>
  <WindowTopY>0</WindowTopY>
  <TabRatio>600</TabRatio>
  <ProtectStructure>False</ProtectStructure>
  <ProtectWindows>False</ProtectWindows>
 </ExcelWorkbook>
 <Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:Color="#000000"/>
   <NumberFormat/>
  </Style>
  <Style ss:ID="s62">
   <Interior/>
   <Protection/>
  </Style>
  <Style ss:ID="s63">
   <Interior ss:Color="#C0C0C0" ss:Pattern="Solid"/>
   <Protection/>
  </Style>
 </Styles>
 <Worksheet ss:Name="Apple Inc">
  <Table x:FullColumns="1"
   x:FullRows="1" ss:StyleID="s62" ss:DefaultColumnWidth="53"
   ss:DefaultRowHeight="12">
   <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="90"/>
   <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="180"/>
   <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="60" ss:Span="5"/>
   <Column ss:Index="9" ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="48"/>
   <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="60"/>
   <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="48"/>
   <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="90" ss:Span="1"/>
   <Column ss:Index="14" ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="300"/>
   <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="55" ss:Span="1"/>
   <Row ss:AutoFitHeight="0" ss:Height="20">
    <Cell ss:StyleID="s63"><Data ss:Type="String">Room</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Description</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">level</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">level</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">level</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">level</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Date</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Audit</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Risk</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Value</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Score</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">ScoreName</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Action</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Comments</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Test</Data></Cell>
    <Cell ss:StyleID="s63"><Data ss:Type="String">Test</Data></Cell>
   </Row>
    <Row>
        <Cell><Data ss:Type="Number">data value</Data></Cell>
        <Cell><Data ss:Type="String">data value</Data></Cell>
        <Cell><Data ss:Type="String">data value</Data></Cell>
        <Cell><Data ss:Type="String">data value</Data></Cell>
        <Cell><Data ss:Type="String">data value</Data></Cell>
        <Cell><Data ss:Type="String">data value</Data></Cell>
        <Cell><Data ss:Type="String">data value</Data></Cell>
        <Cell><Data ss:Type="String">data value</Data></Cell>
        <Cell><Data ss:Type="String">data value</Data></Cell>
        <Cell><Data ss:Type="Number">data value</Data></Cell>
        <Cell><Data ss:Type="Number">data value</Data></Cell>
        <Cell><Data ss:Type="String">data value</Data></Cell>
        <Cell><Data ss:Type="String">data value</Data></Cell>
        <Cell><Data ss:Type="String">data value</Data></Cell>
        <Cell><Data ss:Type="String">Vau</Data></Cell>
        <Cell><Data ss:Type="String">Test</Data></Cell>
    </Row>
 </Table>
  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
   <PageSetup>
    <Header x:Margin="0.3"/>
    <Footer x:Margin="0.3"/>
    <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
   </PageSetup>
   <Unsynced/>
   <Print>
    <ValidPrinterInfo/>
    <HorizontalResolution>600</HorizontalResolution>
    <VerticalResolution>600</VerticalResolution>
   </Print>
   <PageLayoutZoom>0</PageLayoutZoom>
   <Selected/>
   <Panes>
    <Pane>
     <Number>3</Number>
     <ActiveRow>15</ActiveRow>
     <ActiveCol>13</ActiveCol>
    </Pane>
   </Panes>
   <ProtectObjects>False</ProtectObjects>
   <ProtectScenarios>False</ProtectScenarios>
   <AllowFormatCells/>
   <AllowSizeCols/>
   <AllowSizeRows/>
   <AllowInsertCols/>
   <AllowInsertRows/>
   <AllowInsertHyperlinks/>
   <AllowDeleteCols/>
   <AllowDeleteRows/>
   <AllowSort/>
   <AllowFilter/>
   <AllowUsePivotTables/>
  </WorksheetOptions>
 </Worksheet>
</Workbook>

You will be able to create different styles too,

  <Style ss:ID="s63">
   <Interior ss:Color="#C0C0C0" ss:Pattern="Solid"/>
   <Protection/>
  </Style>
Sign up to request clarification or add additional context in comments.

3 Comments

This unfortunately appears to fail to open properly in execl 2016
Correction, it will work but you need to revise the data cells with a number data type to be a string data type, or change "data value" to a number in those fields.
Third update, .xls will cause you to get a warning message when excel opens, use the following line in the XML document below the xml version "<?mso-application progid="Excel.Sheet"?>" and save the file as .xml so that does not end up happening. For reference, this is known as the office 2003 xml format.
2

You could look at Creating Excel (.xlsx) files in Cocoa

If the data you need to save is simple you could also just save it as .CVS file instead http://en.wikipedia.org/wiki/Comma-separated_values

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.