
Код AS3:
package excel
{
import flash.net.FileReference;
import mx.collections.ArrayCollection;
public class ExcelExport
{
public function ExcelExport(data:ArrayCollection)
{
var ExpandedColumnCount:Number = /*вычисляем и пишем сколько столбцов, function () {} и т.д. и т.п.*/ 1;
var ExpandedRowCount:Number = /*вычисляем и пишем сколько строк*/ 1;
var xml:String = new String();
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">';
xml += '<Worksheet ss:Name="Лист">';
xml += '<Names>'+
'<NamedRange ss:Name="_FilterDatabase" ss:RefersTo="=Лист1!R1C1:R20C3" ss:Hidden="1"/>'+ // тут тоже должен указывать всякие индексы с excel
'</Names>';
xml += '<Table ss:ExpandedColumnCount="'+ExpandedColumnCount+'" ss:ExpandedRowCount="'+ExpandedRowCount+'" x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="15">';
for (var row:Object in data){
xml += '<Row ss:AutoFitHeight="0">';
//вычисляем сколько keys есть и на каждый создаем еще =>
//<Cell><Data ss:Type="String">asdasdasd</Data></Cell> не ошибись тут, со String и Number-ом. и вписываем между тегами слово либо значение
//<Cell><Data ss:Type="Number">123123123</Data></Cell>
xml += '</Row>';
}
xml += '</Table>';
xml += '<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">'+
'<FitToPage/>'+
'<Print>'+
'<ValidPrinterInfo/>'+
'<PaperSizeIndex>9</PaperSizeIndex>'+ // дальше подстрайваешь все под себя
'<Scale>95</Scale>'+ // тут
'<HorizontalResolution>600</HorizontalResolution>'+ // тут
'<VerticalResolution>0</VerticalResolution>'+ // тут
'</Print>'+
'<Selected/>'+
'<Panes>'+
'<Pane>'+
'<Number>3</Number>'+
'<ActiveRow>6</ActiveRow>'+ // тут
'<ActiveCol>1</ActiveCol>'+ // тут
'</Pane>'+
'</Panes>'+
'<ProtectObjects>False</ProtectObjects>'+
'<ProtectScenarios>False</ProtectScenarios>'+
'</WorksheetOptions>'+
'<AutoFilter x:Range="R1C1:R20C3" xmlns="urn:schemas-microsoft-com:office:excel">'+ // и тут
'</AutoFilter>'+
'</Worksheet></Workbook>';
var file:FileReference = new FileReference();
file.save(xml, "data.xls");
}
}
}
Сам не проверял просто набросал. Но теоретический он должен работать. =))