天天看點

Appcan開發筆記:導出Excel檔案

Appcan IDE為4.0+;

appcan提供了導出檔案的方法 appcan.file.write 檔案會自動建立,要解決的事情是Excel用字元串輸出,可以考慮 csv(逗号間隔)、HTML、Xml,這些都可以通過拼接字元串導出Excel

下面給出HTML格式的模闆,作為記錄備份

1 function writeExcel(data) {
 2     if (!appcan.isArray(data)) {
 3         return;
 4     }
 5     var tmpl = '<html xmlns:v="urn:schemas-microsoft-com:vml"';
 6     tmpl += 'xmlns:o="urn:schemas-microsoft-com:office:office"';
 7     tmpl += ' xmlns:x="urn:schemas-microsoft-com:office:excel"';
 8     tmpl += ' xmlns="http://www.w3.org/TR/REC-html40">';
 9     tmpl += ' <head>';
10     tmpl += ' <meta charset="UTF-8" />';
11     tmpl += '<!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>';
12     tmpl += '<x:Name>Worksheet</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions>';
13     tmpl += '</x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head>';
14     tmpl += '<body>';
15     tmpl += '<table>';
16     tmpl += '<thead>';
17     tmpl += '<tr>';
18     tmpl += ' <th>标題1</th>';
19     tmpl += ' <th>标題2</th>'
20     tmpl += '</tr>';
21     tmpl += '</thead>';
22     tmpl += '<tbody>';
23     for (var i = 0; i < data.length; i++) {
24         tmpl += '<tr><td>' + data[i].字段1 + '</td>';
25         tmpl += '<td>' + data[i].字段2 + '</td></tr>';
26     }
27     tmpl += '</tbody>';
28     tmpl += '</table>';
29     tmpl += '</body>';
30     tmpl += '</html>';
31 
32     console.log("開始導出資料");
33 
34     var myDate = new Date().format("yyyyMMddhhmm");
35     appcan.file.write({
36         filePath : '/storage/emulated/0/' + myDate + '.xlsx',
37         content : tmpl,
38         callback : function(err) {
39             if (err) {
40                 appcan.window.openToast('導出不成功', 5000, '5', '0');
41                 //寫入出錯了
42                 return;
43             }
44             appcan.window.openToast('導出成功' + myDate + '.xlsx', 5000, '5', '0');
45             //寫入成功了
46         }
47     });
48 }