Skip to content

Commit 1c25d62

Browse files
Update msexcel-builder to write numbers as numbers; bump package version
1 parent 203fa24 commit 1c25d62

File tree

11 files changed

+189
-75
lines changed

11 files changed

+189
-75
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ node_modules
22
.DS_Store
33
out.*
44
.idea/
5+
6+
\#*#

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ $ git clone git://github.com/protobi/officegen.git
5757
via npm:
5858

5959
```bash
60-
$ npm install protobi/officegen
60+
$ npm install officegen
6161
```
6262

6363
This module is depending on:
@@ -441,7 +441,8 @@ slide.addChart(
441441
renderType: 'column',
442442
valAxisTitle: 'Costs/Revenues ($)',
443443
catAxisTitle: 'Category',
444-
valAxisNumFmt: '$0
444+
valAxisNumFmt: '$0',
445+
valAxisMaxValue: 24,
445446
data: [ // each item is one serie
446447
{
447448
name: 'Income',

lib/basicgen.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
require("setimmediate"); // To be compatible with all versions of node.js
3232

33-
var sys = require('sys');
33+
var sys = require('util');
3434
var events = require('events');
3535

3636
var Transform = require('stream').Transform || require('readable-stream/transform');
@@ -69,8 +69,8 @@ int_officegen_globals.resParserTypes = {};
6969
///
7070
/// @param[in] options List of configuration options (see in the description of this function).
7171
///
72-
officegen = function ( options ) {
73-
if ( false === ( this instanceof officegen )) {
72+
var officegen = function ( options ) {
73+
if ( false === ( this instanceof officegen )) {
7474
return new officegen ( options );
7575
} // Endif.
7676

@@ -103,7 +103,7 @@ officegen = function ( options ) {
103103
///
104104
/// @param[in] options The options to configure.
105105
///
106-
function setOptions ( object, source ) {
106+
function setOptions ( object, source ) {// what is source for
107107
object = object || {};
108108

109109
var objectTypes = {
@@ -117,15 +117,15 @@ officegen = function ( options ) {
117117

118118
function isObject (value) {
119119
return !!(value && objectTypes[typeof value]);
120-
};
120+
}
121121

122122
function keys (object) {
123123
if (!isObject(object)) {
124124
return [];
125125
}
126126

127127
return Object.keys(object);
128-
};
128+
}
129129

130130
var index;
131131
var iterable = object;
@@ -135,13 +135,15 @@ officegen = function ( options ) {
135135
var argsIndex = 0;
136136
var argsLength = args.length;
137137

138+
//loop variables
139+
var ownIndex = -1;
140+
var ownProps = objectTypes[typeof iterable] && keys(iterable);
141+
var length = ownProps ? ownProps.length : 0;
142+
138143
while (++argsIndex < argsLength) {
139144
iterable = args[argsIndex];
140145

141146
if (iterable && objectTypes[typeof iterable]) {
142-
var ownIndex = -1;
143-
var ownProps = objectTypes[typeof iterable] && keys(iterable);
144-
var length = ownProps ? ownProps.length : 0;
145147

146148
while (++ownIndex < length) {
147149
index = ownProps[ownIndex];

lib/gendocx.js

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,13 @@ function makeDocx ( genobj, new_type, options, gen_private, type_info ) {
244244
outString += '<wp:inline distT="0" distB="0" distL="0" distR="0">';
245245
outString += '<wp:extent cx="' + (objs_list[i].data[j].options.cx * pixelToEmu) + '" cy="' + (objs_list[i].data[j].options.cy * pixelToEmu) + '"/>';
246246
outString += '<wp:effectExtent l="19050" t="0" r="9525" b="0"/>';
247-
outString += '<wp:docPr id="' + (objs_list[i].data[j].image_id + 1) + '" name="Picture ' + objs_list[i].data[j].image_id + '" descr="Picture ' + objs_list[i].data[j].image_id + '"/>';
247+
248+
outString += '<wp:docPr id="' + (objs_list[i].data[j].image_id + 1) + '" name="Picture ' + objs_list[i].data[j].image_id + '" descr="Picture ' + objs_list[i].data[j].image_id + '">';
249+
if(objs_list[i].data[j].link_rel_id){
250+
outString += '<a:hlinkClick xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" r:id="rId'+objs_list[i].data[j].link_rel_id+'"/>';
251+
}
252+
outString += '</wp:docPr>';
253+
248254
outString += '<wp:cNvGraphicFramePr>';
249255
outString += '<a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1"/>';
250256
outString += '</wp:cNvGraphicFramePr>';
@@ -284,7 +290,29 @@ function makeDocx ( genobj, new_type, options, gen_private, type_info ) {
284290
outString += '</w:p>';
285291
} // End of for loop.
286292

287-
outString += '<w:p w:rsidR="00A02F19" w:rsidRDefault="00A02F19"/><w:sectPr w:rsidR="00A02F19" w:rsidSect="00A02F19"><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:linePitch="360"/></w:sectPr></w:body></w:document>';
293+
outString += '<w:p w:rsidR="00A02F19" w:rsidRDefault="00A02F19"/>';
294+
295+
// Landscape orientation support
296+
if(options.orientation && options.orientation == 'landscape'){
297+
outString +=
298+
'<w:sectPr w:rsidR="00A02F19" w:rsidSect="00897086">' +
299+
'<w:pgSz w:w="15840" w:h="12240" w:orient="landscape"/>' +
300+
'<w:pgMar w:top="1800" w:right="1440" w:bottom="1800" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/>' +
301+
'<w:cols w:space="720"/>' +
302+
'<w:docGrid w:linePitch="360"/>' +
303+
'</w:sectPr>';
304+
}else{
305+
outString +=
306+
'<w:sectPr w:rsidR="00A02F19" w:rsidSect="00A02F19">' +
307+
'<w:pgSz w:w="12240" w:h="15840"/>' +
308+
'<w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="720" w:footer="720" w:gutter="0"/>' +
309+
'<w:cols w:space="720"/>' +
310+
'<w:docGrid w:linePitch="360"/>' +
311+
'</w:sectPr>';
312+
}
313+
314+
outString += '</w:body></w:document>';
315+
288316
return outString;
289317
}
290318

@@ -504,11 +532,26 @@ function makeDocx ( genobj, new_type, options, gen_private, type_info ) {
504532
);
505533
} // Endif.
506534

535+
if ((opt || {}).link) {
536+
537+
var link_rel_id = gen_private.type.msoffice.rels_app.length + 1;
538+
539+
gen_private.type.msoffice.rels_app.push({
540+
type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
541+
target: opt.link,
542+
targetMode: 'External'
543+
});
544+
545+
newP.data[objNum].link_rel_id = link_rel_id;
546+
547+
} // Endif.
548+
507549
newP.data[objNum].image_id = image_id;
508550
newP.data[objNum].rel_id = image_rel_id;
509551
};
510552

511553
genobj.data[genobj.data.length] = newP;
554+
512555
return newP;
513556
};
514557

lib/genpptx.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,8 @@ function makePptx ( genobj, new_type, options, gen_private, type_info ) {
423423

424424
out_obj.font_size = '';
425425
out_obj.bold = '';
426+
out_obj.italic = '';
427+
out_obj.strike = '';
426428
out_obj.underline = '';
427429
out_obj.rpr_info = '';
428430
out_obj.char_spacing = '';
@@ -433,6 +435,14 @@ function makePptx ( genobj, new_type, options, gen_private, type_info ) {
433435
out_obj.bold = ' b="1"';
434436
} // Endif.
435437

438+
if ( text_info.italic ) {
439+
out_obj.italic = ' i="1"';
440+
} // Endif.
441+
442+
if ( text_info.strike ) {
443+
out_obj.strike = ' strike="sngStrike"';
444+
} // Endif.
445+
436446
if ( text_info.underline ) {
437447
out_obj.underline = ' u="sng"';
438448
} // Endif.
@@ -487,8 +497,12 @@ function makePptx ( genobj, new_type, options, gen_private, type_info ) {
487497
///
488498
function cMakePptxOutTextCommand ( text_info, text_string, slide_obj, slide_num ) {
489499
var area_opt_data = cMakePptxOutTextData ( text_info, slide_obj );
500+
var textStyles = ['font_size', 'strike', 'italic', 'bold', 'underline', 'char_spacing'].reduce(function(acc, attr) {
501+
return acc + area_opt_data[attr]
502+
}, '');
490503
var parsedText;
491-
var startInfo = '<a:rPr lang="en-US"' + area_opt_data.font_size + area_opt_data.bold + area_opt_data.underline + area_opt_data.char_spacing + ' dirty="0" smtClean="0"' + (area_opt_data.rpr_info != '' ? ('>' + area_opt_data.rpr_info) : '/>') + '<a:t>';
504+
var startInfo = '<a:rPr lang="en-US"' + textStyles + ' dirty="0" smtClean="0"' +
505+
(area_opt_data.rpr_info != '' ? ('>' + area_opt_data.rpr_info) : '/>') + '<a:t>';
492506
var endTag = '</a:r>';
493507
var outData = '<a:r>' + startInfo;
494508

lib/genxlsx.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,13 @@ function makeXlsx ( genobj, new_type, options, gen_private, type_info ) {
307307
// outString += '<selection activeCell="A1" sqref="A1"/>';
308308
outString += '</sheetViews><sheetFormatPr defaultRowHeight="15"/>';
309309

310-
// BMK_TODO: <cols><col min="2" max="2" width="19" customWidth="1"/></cols>
310+
if ( data.sheet.width ) {
311+
outString += '<cols>';
312+
for ( var i = 0; i < data.sheet.width.length; i++ ) {
313+
outString += "<col min=\"" + (i+1) + "\" max=\"" + (i+1) + "\" width=\"" + data.sheet.width[i] + "\" customWidth=\"1\"/>";
314+
}
315+
outString += '</cols>';
316+
}
311317

312318
outString += '<sheetData>';
313319

0 commit comments

Comments
 (0)