Is there any way to create an Excel file programmatically in iOS?
Asked
Active
Viewed 9,652 times
6
-
No answer, but same question: http://stackoverflow.com/questions/15269767/how-to-create-a-custom-xls-file-programatically?rq=1 and http://stackoverflow.com/questions/10818207/creating-excel-xls-files-on-ios and http://stackoverflow.com/questions/11535772/iphone-sdk-export-data-to-xls-not-via-csv?lq=1 – Thilo Jul 24 '13 at 09:34
2 Answers
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>

TeaCupApp
- 11,316
- 18
- 70
- 150
-
This unfortunately appears to fail to open properly in execl 2016 – TheYellowSquares Feb 06 '20 at 14:21
-
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. – TheYellowSquares Feb 06 '20 at 14:28
-
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 "" and save the file as .xml so that does not end up happening. For reference, this is known as the office 2003 xml format. – TheYellowSquares Feb 06 '20 at 14:48
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