rowOffset : 0,
+ /**
+ * @type {String} format - either XLSX (if images are used) or XLS - as ssconvert does not do images that well.
+ */
+
+ format : 'xlsx',
+
+
/**
* load:
* run the connection, parse document and fire load event..
// we wil only support AA not AAA
var top = Math.floor(c/26);
var bot = c % 26;
- var cc = top > 0 ? String.fromCharCode('A'.charCodeAt(0) + top) : '';
+ var cc = top > 0 ? String.fromCharCode('A'.charCodeAt(0) + (top-1)) : '';
cc += String.fromCharCode('A'.charCodeAt(0) + bot);
return cc+'' +r;
}
}
-
});
// read colinfo..
var ci = this.sheet.getElementsByTagNameNS('*','ColInfo');
this.setRowHeight( row + yoff +1, Roo.get(rows[row]).getHeight());
}
-
var cols = rows[row].getElementsByTagName('td');
-
for(var col=0;col < cols.length; col++) {
-
-
+ if (cols[col].getAttribute('xls:width')) {
+ this.setColumnWidth(col, 1 * cols[col].getAttribute('xls:width'));
+ }
var colspan = cols[col].getAttribute('colspan');
colspan = colspan ? colspan *1 : 1;
},
-
+ /**
+ * writeImageOld:
+ * write an image in old gnumberic format (needs base64 data to write it)
+ *
+ *
+ * @param {Number} row row to put it in (rows start at 0)
+ * @param {Number} col column to put it in
+ * @param {Number} data the base64 description of the images
+ * @param {Number} width image width
+ * @param {Number} width image height
+ *
+ */
+ writeImageOld : function (row, col, data, width, height, type, size)
+ {
+
+ if (!data) {
+ throw "write Image called with missing data";
+ }
+
+ row*=1;
+ col*=1;
+ height*=1;
+ width*=1;
+ var objs = this.sheet.getElementsByTagNameNS('*','Objects')[0];
+ var soi = this.doc.createElementNS('http://www.gnumeric.org/v10.dtd', 'gnm:SheetObjectImage');
+
+ var colwidth = 0;
+ var endcol=col;
+ for ( endcol=col;endcol <100; endcol++) {
+ if (!this.colInfo[endcol]) {
+ this.colInfo[endcol] = 100; // eak fudge
+ }
+ colwidth += this.colInfo[endcol];
+ if (colwidth > width) {
+ break;
+ }
+ }
+
+ soi.setAttribute('ObjectBound', this.RCtoCell(row,col) + ':' + this.RCtoCell(row,endcol));
+
+ var ww = 0.01; // offset a bit...
+ var hh = 0.01; //
+
+ var rowHeight = typeof(this.rowInfoDom[row]) == 'undefined' ? 100 :
+ this.rowInfoDom[row].getAttribute('Unit')*1;
+
+
+ var ww2 = 1 - ((colwidth - width) / this.colInfo[endcol]);
+ var hh2 = 1 - ((rowHeight - height) / rowHeight);
+
+ var offset_str = ww + ' ' + hh + ' ' + ww2 + ' '+hh2;
+
+ // offset string 0.01 0.01 0.01 0.392 << last one needs to be calculated based on proportions.
+ // so what are our dimentions..
+
+
+
+
+
+ //alert(offset_str);
+ soi.setAttribute('ObjectOffset', offset_str);
+ soi.setAttribute('ObjectAnchorType','16 16 16 16');
+ soi.setAttribute('Direction','17');
+ soi.setAttribute('crop-top','0.000000');
+ soi.setAttribute('crop-bottom','0.000000');
+ soi.setAttribute('crop-left','0.000000');
+ soi.setAttribute('crop-right','0.000000');
+
+
+
+
+
+ var content = this.doc.createElement('Content');
+ content.setAttribute('image-type', type ? type : 'jpeg');
+ content.setAttribute('size-bytes', size);
+ content.appendChild( this.doc.createTextNode(data));
+ soi.appendChild(content);
+ objs.appendChild(soi);
+
+ if (typeof(this.grid[row]) == 'undefined') {
+ this.grid[row] = [];
+ }
+ if (typeof(this.grid[row][col]) == 'undefined') {
+ this.createCell(row,col);
+ }
+
+ this.grid[row][col].value= data;
+ this.grid[row][col].valueFormat = 'image';
+ this.grid[row][col].imageType = type;
+ this.grid[row][col].width = width;
+ this.grid[row][col].height = height;
+
+ var godoc = this.doc.getElementsByTagNameNS('*','GODoc')[0];
+
+ if(godoc && godoc.parentNode) {
+ godoc.parentNode.removeChild(godoc);
+ }
+
+ return true;
+ },
/**
* writeImage:
*
*/
-
writeImage : function (row, col, data, width, height, type)
{
var ww = 0.01; // offset a bit...
var hh = 0.01; //
+ var rowHeight = typeof(this.rowInfoDom[row]) == 'undefined' ? 100 :
+ this.rowInfoDom[row].getAttribute('Unit')*1;
+
+
var ww2 = 1 - ((colwidth - width) / this.colInfo[endcol]);
- var hh2 = 0.99;
+ var hh2 = 1 - ((rowHeight - height) / rowHeight);
var offset_str = ww + ' ' + hh + ' ' + ww2 + ' '+hh2;
- //console.log(offset_str );
+
//alert(offset_str);
soi.setAttribute('ObjectOffset', offset_str);
soi.setAttribute('ObjectAnchorType','16 16 16 16');
godoc.appendChild(goimage);
+ if (typeof(this.grid[row]) == 'undefined') {
+ this.grid[row] = [];
+ }
+ if (typeof(this.grid[row][col]) == 'undefined') {
+ this.createCell(row,col);
+ }
+
+ this.grid[row][col].value= data;
+ this.grid[row][col].valueFormat = 'image';
+ this.grid[row][col].imageType = type;
+ this.grid[row][col].width = width;
+ this.grid[row][col].height = height;
+
return true;
//< /gnm:SheetObjectImage>
// < /gnm:Objects>
},
+ /**
+ * writeFixedImageOld:
+ * write an image in old gnumberic format (needs base64 data to write it)
+ */
+ writeFixedImageOld : function (startCol, startRow, endCol, endRow, type, data, width, height, size)
+ {
+ if (!data) {
+ throw "write Image called with missing data";
+ }
+
+ startCol = startCol * 1;
+ startRow = startRow * 1;
+ endCol = endCol * 1;
+ endRow = endRow * 1;
+ width = width * 1;
+ height = height * 1;
+
+ var objs = this.sheet.getElementsByTagNameNS('*','Objects')[0];
+ var soi = this.doc.createElementNS('http://www.gnumeric.org/v10.dtd', 'gnm:SheetObjectImage');
+
+ soi.setAttribute('ObjectBound',this.RCtoCell(startRow, startCol) + ':' + this.RCtoCell(endRow, endCol));
+
+ soi.setAttribute('ObjectOffset', '0 0 0 0');
+ soi.setAttribute('ObjectAnchorType','16 16 16 16');
+ soi.setAttribute('Direction','17');
+ soi.setAttribute('crop-top','0.000000');
+ soi.setAttribute('crop-bottom','0.000000');
+ soi.setAttribute('crop-left','0.000000');
+ soi.setAttribute('crop-right','0.000000');
+
+ var content = this.doc.createElement('Content');
+ content.setAttribute('image-type', type ? type : 'jpeg');
+ content.setAttribute('size-bytes', size);
+ content.appendChild( this.doc.createTextNode(data));
+ soi.appendChild(content);
+ objs.appendChild(soi);
+
+ if (typeof(this.grid[startRow]) == 'undefined') {
+ this.grid[startRow] = [];
+ }
+ if (typeof(this.grid[startRow][startCol]) == 'undefined') {
+ this.createCell(startRow,startCol);
+ }
+
+ this.grid[startRow][startCol].value= data;
+ this.grid[startRow][startCol].valueFormat = 'image';
+ this.grid[startRow][startCol].imageType = type;
+ this.grid[startRow][startCol].width = width;
+ this.grid[startRow][startCol].height = height;
+
+ var godoc = this.doc.getElementsByTagNameNS('*','GODoc')[0];
+
+ if(godoc && godoc.parentNode) {
+ godoc.parentNode.removeChild(godoc);
+ }
+
+ return true;
+ },
+
writeFixedImage : function (startCol, startRow, endCol, endRow, type, data, width, height)
{
if (!data) {
throw "write Image called with missing data";
}
+ startCol = startCol * 1;
+ startRow = startRow * 1;
+ endCol = endCol * 1;
+ endRow = endRow * 1;
+ width = width * 1;
+ height = height * 1;
+
+ var objs = this.sheet.getElementsByTagNameNS('*','Objects')[0];
+ var soi = this.doc.createElementNS('http://www.gnumeric.org/v10.dtd', 'gnm:SheetObjectImage');
+
+ soi.setAttribute('ObjectBound',this.RCtoCell(startRow, startCol) + ':' + this.RCtoCell(endRow, endCol));
+
+ soi.setAttribute('ObjectOffset', '0 0 0 0');
+ soi.setAttribute('ObjectAnchorType','16 16 16 16');
+ soi.setAttribute('Direction','17');
+ soi.setAttribute('crop-top','0.000000');
+ soi.setAttribute('crop-bottom','0.000000');
+ soi.setAttribute('crop-left','0.000000');
+ soi.setAttribute('crop-right','0.000000');
+
+ var name = 'Image' + Math.random().toString(36).substring(2);
+ var content = this.doc.createElement('Content');
+ content.setAttribute('image-type', type ? type : 'jpeg');
+ content.setAttribute('name', name);
+
+ soi.appendChild(content);
+ objs.appendChild(soi);
+
+ var godoc = this.doc.getElementsByTagNameNS('*','GODoc')[0];
+
+ var goimage = this.doc.createElement('GOImage');
+ goimage.setAttribute('image-type', type ? type : 'jpeg');
+ goimage.setAttribute('name', name);
+ goimage.setAttribute('type', 'GOPixbuf');
+ goimage.setAttribute('width', width);
+ goimage.setAttribute('height', height);
+ goimage.textContent = data;
+
+ godoc.appendChild(goimage);
+
+ if (typeof(this.grid[startRow]) == 'undefined') {
+ this.grid[startRow] = [];
+ }
+ if (typeof(this.grid[startRow][startCol]) == 'undefined') {
+ this.createCell(startRow,startCol);
+ }
+
+ this.grid[startRow][startCol].value= data;
+ this.grid[startRow][startCol].valueFormat = 'image';
+ this.grid[startRow][startCol].imageType = type;
+ this.grid[startRow][startCol].width = width;
+ this.grid[startRow][startCol].height = height;
return true;
- //< /gnm:SheetObjectImage>
- // < /gnm:Objects>
-
},
/**
column = column *1;
width= width*1;
if (typeof(this.colInfoDom[column]) == 'undefined') {
- var cols = this.doc.getElementsByTagNameNS('*','Cols')[0];
+ var cols = this.sheet.getElementsByTagNameNS('*','Cols')[0];
var ri = this.doc.createElementNS('http://www.gnumeric.org/v10.dtd', 'gnm:ColInfo');
ri.setAttribute('No', column);
ri.setAttribute('Unit', width);
}
+ if(g.valueFormat == 'image') {
+
+ out+=String.format('<td colspan="{0}" rowspan="{1}" class="{2}"><div style="{3}"><img src="data:image/{4};base64, {5}" width="{6}" height="{7}"></div></td>',
+ g.colspan, g.rowspan, g.cls.join(' '),
+ 'overflow:hidden;' +
+ 'width:'+g.width+'px;' +
+
+ 'text-overflow:ellipsis;' +
+ 'white-space:nowrap;',
+ g.imageType,
+ value, g.width, g.height
+
+ );
+ c+=(g.colspan-1);
+ continue;
+ }
+
out+=String.format('<td colspan="{0}" rowspan="{1}" class="{4}"><div style="{3}">{2}</div></td>',
g.colspan, g.rowspan, value,
'overflow:hidden;' +
}
var ser = new XMLSerializer();
+ Roo.get(document.body).mask("Downloading");
var x = new Pman.Download({
method: 'POST',
- timeout : 120000, // quite a long wait.. 2 minutes.
+ timeout :240000, // quite a long wait.. 2 minutes.
params : {
xml : ser.serializeToString(this.doc),
- format : 'xls', //xml
+ format : this.format,
debug : 0
},
url : (this.downloadURL || (baseURL + '/GnumericToExcel/')) + name + '.xls',
success : function() {
+ Roo.get(document.body).unmask();
Roo.MessageBox.alert("Alert", "File should have downloaded now");
if (callback) {
callback();
}
- }
+ },
+ failure : function() {
+ Roo.get(document.body).unmask();
+ Roo.MessageBox.alert("Alert", "Download failed");
+ }
});
}