forked from sheetjs/sheetjs
		
	The optional ODS module has been completely merged into xlsx.js and the corresponding scripts have been removed. The new xlsx.js file provides appropriate ODS exports, so fixing is a matter of removing ods.js refs.
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Part 3: Packages */
 | |
| function parse_ods(zip/*:ZIPFile*/, opts/*:?ParseOpts*/) {
 | |
| 	opts = opts || ({}/*:any*/);
 | |
| 	var ods = !!safegetzipfile(zip, 'objectdata');
 | |
| 	if(ods) var manifest = parse_manifest(getzipdata(zip, 'META-INF/manifest.xml'), opts);
 | |
| 	var content = getzipdata(zip, 'content.xml');
 | |
| 	if(!content) throw new Error("Missing content.xml in " + (ods ? "ODS" : "UOF")+ " file");
 | |
| 	return parse_content_xml(ods ? content : utf8read(content), opts);
 | |
| }
 | |
| function parse_fods(data/*:string*/, opts/*:?ParseOpts*/) {
 | |
| 	return parse_content_xml(data, opts);
 | |
| }
 | |
| 
 | |
| function write_ods(wb/*:any*/, opts/*:any*/) {
 | |
| 	if(opts.bookType == "fods") return write_content_xml(wb, opts);
 | |
| 
 | |
| 	/*:: if(!jszip) throw new Error("JSZip is not available"); */
 | |
| 	var zip = new jszip();
 | |
| 	var f = "";
 | |
| 
 | |
| 	var manifest/*:Array<Array<string> >*/ = [];
 | |
| 	var rdf = [];
 | |
| 
 | |
| 	/* 3:3.3 and 2:2.2.4 */
 | |
| 	f = "mimetype";
 | |
| 	zip.file(f, "application/vnd.oasis.opendocument.spreadsheet");
 | |
| 
 | |
| 	/* Part 1 Section 2.2 Documents */
 | |
| 	f = "content.xml";
 | |
| 	zip.file(f, write_content_xml(wb, opts));
 | |
| 	manifest.push([f, "text/xml"]);
 | |
| 	rdf.push([f, "ContentFile"]);
 | |
| 
 | |
| 	/* Part 3 Section 6 Metadata Manifest File */
 | |
| 	f = "manifest.rdf";
 | |
| 	zip.file(f, write_rdf(rdf, opts));
 | |
| 	manifest.push([f, "application/rdf+xml"]);
 | |
| 
 | |
| 	/* Part 3 Section 4 Manifest File */
 | |
| 	f = "META-INF/manifest.xml";
 | |
| 	zip.file(f, write_manifest(manifest, opts));
 | |
| 
 | |
| 	return zip;
 | |
| }
 |