27#include <excelimport.h>
28#include <excelimport.moc>
32#include <tqdatetime.h>
36#include <tqtextstream.h>
39#include <KoFilterChain.h>
42#include <kgenericfactory.h>
44#include <KoXmlWriter.h>
45#include <KoOasisStore.h>
50typedef KGenericFactory<ExcelImport, KoFilter> ExcelImportFactory;
51K_EXPORT_COMPONENT_FACTORY( libexcelimport, ExcelImportFactory( "kofficefilters" ) )
56inline TQConstString string( const Swinder:: UString& str ) {
58 return TQConstString( reinterpret_cast<const TQChar* >( str.data() ), str.length() );
61using namespace Swinder;
63class ExcelImport::Private
71 bool createStyles( KoOasisStore* store );
72 bool createContent( KoOasisStore* store );
73 bool createManifest( KoOasisStore* store );
76 int columnFormatIndex;
79 TQMap<int,bool> styleFormats;
80 TQMap<int,bool> isPercentageStyle;
81 TQMap<int,bool> isDateStyle;
82 TQMap<int,bool> isTimeStyle;
84 void processWorkbookForBody( Workbook* workbook, KoXmlWriter* xmlWriter );
85 void processWorkbookForStyle( Workbook* workbook, KoXmlWriter* xmlWriter );
86 void processSheetForBody( Sheet* sheet, KoXmlWriter* xmlWriter );
87 void processSheetForStyle( Sheet* sheet, KoXmlWriter* xmlWriter );
88 void processColumnForBody( Column* column, int repeat, KoXmlWriter* xmlWriter );
89 void processColumnForStyle( Column* column, int repeat, KoXmlWriter* xmlWriter );
90 void processRowForBody( Row* row, int repeat, KoXmlWriter* xmlWriter );
91 void processRowForStyle( Row* row, int repeat, KoXmlWriter* xmlWriter );
92 void processCellForBody( Cell* cell, KoXmlWriter* xmlWriter );
93 void processCellForStyle( Cell* cell, KoXmlWriter* xmlWriter );
94 void processFormat( const Format* format, KoXmlWriter* xmlWriter );
95 void processValueFormat( TQString valueFormat, TQString refName, KoXmlWriter* xmlWriter );
99ExcelImport::ExcelImport ( TQObject*, const char*, const TQStringList& )
105ExcelImport::~ExcelImport()
110KoFilter::ConversionStatus ExcelImport::convert( const TQCString& from, const TQCString& to )
112 if ( from != "application/msexcel" )
113 return KoFilter::NotImplemented;
115 if ( to != "application/vnd.oasis.opendocument.spreadsheet" )
116 return KoFilter::NotImplemented;
118 d->inputFile = m_chain->inputFile();
119 d->outputFile = m_chain->outputFile();
125 d->workbook = new Swinder::Workbook;
126 if( !d->workbook->load( d->inputFile.local8Bit() ) )
130 return KoFilter::StupidError;
133 if( d->workbook->isPasswordProtected() )
137 return KoFilter::PasswordProtected;
140 kdDebug(30511) << "File " << d->inputFile << " loaded. Time: " << time.elapsed() << " ms " << endl;
145 storeout = KoStore::createStore( d->outputFile, KoStore::Write,
146 "application/vnd.oasis.opendocument.spreadsheet", KoStore::Zip );
150 kdWarning() << "Couldn't open the requested file." << endl;
152 return KoFilter::FileNotFound;
156 storeout->disallowNameExpansion();
157 KoOasisStore oasisStore( storeout );
160 d->sheetFormatIndex = 1;
161 d->columnFormatIndex = 1;
162 d->rowFormatIndex = 1;
163 if ( !d->createStyles( &oasisStore ) )
165 kdWarning() << "Couldn't open the file 'styles.xml'." << endl;
168 return KoFilter::CreationError;
172 d->sheetFormatIndex = 1;
173 d->columnFormatIndex = 1;
174 d->rowFormatIndex = 1;
175 if ( !d->createContent( &oasisStore ) )
177 kdWarning() << "Couldn't open the file 'content.xml'." << endl;
180 return KoFilter::CreationError;
184 if ( !d->createManifest( &oasisStore ) )
186 kdWarning() << "Couldn't open the file 'META-INF/manifest.xml'." << endl;
189 return KoFilter::CreationError;
192 kdDebug(30511) << "Converted to " << d->outputFile << ". Time: " << time.elapsed() << " ms " << endl;
197 d->inputFile = TQString();
198 d->outputFile = TQString();
205bool ExcelImport::Private::createContent( KoOasisStore* store )
207 KoXmlWriter* bodyWriter = store->bodyWriter();
208 KoXmlWriter* contentWriter = store->contentWriter();
209 if ( !bodyWriter || !contentWriter )
213 contentWriter->startElement( "office:font-face-decls" );
214 contentWriter->startElement( "style:font-face" );
215 contentWriter->addAttribute( "style:name", "Arial" );
216 contentWriter->addAttribute( "svg:font-family", "Arial" );
217 contentWriter->endElement();
218 contentWriter->startElement( "style:font-face" );
219 contentWriter->addAttribute( "style:name", "Times New Roman" );
220 contentWriter->addAttribute( "svg:font-family", "'Times New Roman'" );
221 contentWriter->endElement();
222 contentWriter->endElement();
225 sheetFormatIndex = 1;
226 columnFormatIndex = 1;
230 contentWriter->startElement( "office:automatic-styles" );
231 processWorkbookForStyle( workbook, contentWriter );
232 contentWriter->endElement();
235 sheetFormatIndex = 1;
236 columnFormatIndex = 1;
240 bodyWriter->startElement( "office:body" );
241 processWorkbookForBody( workbook, bodyWriter );
242 bodyWriter->endElement();
244 return store->closeContentWriter();
247bool ExcelImport::Private::createStyles( KoOasisStore* store )
249 if ( !store->store()->open( "styles.xml" ) )
251 KoStoreDevice dev( store->store() );
252 KoXmlWriter* stylesWriter = new KoXmlWriter( &dev );
255 stylesWriter->startDocument( "office:document-styles" );
256 stylesWriter->startElement( "office:document-styles" );
257 stylesWriter->addAttribute( "xmlns:office", "urn:oasis:names:tc:opendocument:xmlns:office:1.0" );
258 stylesWriter->addAttribute( "xmlns:style", "urn:oasis:names:tc:opendocument:xmlns:style:1.0" );
259 stylesWriter->addAttribute( "xmlns:text", "urn:oasis:names:tc:opendocument:xmlns:text:1.0" );
260 stylesWriter->addAttribute( "xmlns:table", "urn:oasis:names:tc:opendocument:xmlns:table:1.0" );
261 stylesWriter->addAttribute( "xmlns:draw", "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" );
262 stylesWriter->addAttribute( "xmlns:fo", "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" );
263 stylesWriter->addAttribute( "xmlns:svg", "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" );
264 stylesWriter->addAttribute( "office:version", "1.0" );
265 stylesWriter->startElement( "office:styles" );
266 stylesWriter->startElement( "style:default-style" );
267 stylesWriter->addAttribute( "style:family", "table-cell" );
268 stylesWriter->startElement( "style:table-cell-properties" );
269 stylesWriter->addAttribute( "style:decimal-places", "2" );
270 stylesWriter->endElement();
271 stylesWriter->startElement( "style:paragraph-properties" );
272 stylesWriter->addAttribute( "style:tab-stop-distance", "0.5in" );
273 stylesWriter->endElement();
274 stylesWriter->startElement( "style:text-properties" );
275 stylesWriter->addAttribute( "style:font-name", "Albany AMT" );
276 stylesWriter->addAttribute( "fo:language", "en" );
277 stylesWriter->addAttribute( "fo:country", "US" );
278 stylesWriter->addAttribute( "style:font-name-asian", "Albany AMT1" );
279 stylesWriter->addAttribute( "style:country-asian", "none" );
280 stylesWriter->addAttribute( "style:font-name-complex", "Lucidasans" );
281 stylesWriter->addAttribute( "style:language-complex", "none" );
282 stylesWriter->addAttribute( "style:country-complex", "none" );
283 stylesWriter->endElement();
284 stylesWriter->endElement();
285 stylesWriter->startElement( "style:style" );
286 stylesWriter->addAttribute( "style:name", "Default" );
287 stylesWriter->addAttribute( "style:family", "table-cell" );
288 stylesWriter->endElement();
289 stylesWriter->endElement();
292 stylesWriter->startElement( "office:automatic-styles" );
293 stylesWriter->endElement();
295 stylesWriter->endElement();
296 stylesWriter->endDocument();
300 return store->store()->close();
303bool ExcelImport::Private::createManifest( KoOasisStore* store )
305 KoXmlWriter* manifestWriter = store->manifestWriter( "application/vnd.oasis.opendocument.spreadsheet" );
307 manifestWriter->addManifestEntry( "styles.xml", "text/xml" );
308 manifestWriter->addManifestEntry( "content.xml", "text/xml" );
310 return store->closeManifestWriter();
313void ExcelImport::Private::processWorkbookForBody( Workbook* workbook, KoXmlWriter* xmlWriter )
315 if( !workbook ) return;
316 if( !xmlWriter ) return;
318 xmlWriter->startElement( "office:spreadsheet" );
320 for( unsigned i=0; i < workbook->sheetCount(); i++ )
322 Sheet* sheet = workbook->sheet( i );
323 processSheetForBody( sheet, xmlWriter );
326 xmlWriter->endElement();
329void ExcelImport::Private::processWorkbookForStyle( Workbook* workbook, KoXmlWriter* xmlWriter )
331 if( !workbook ) return;
332 if( !xmlWriter ) return;
334 for( unsigned i=0; i < workbook->sheetCount(); i++ )
336 Sheet* sheet = workbook->sheet( i );
337 processSheetForStyle( sheet, xmlWriter );
341void ExcelImport::Private::processSheetForBody( Sheet* sheet, KoXmlWriter* xmlWriter )
344 if( !xmlWriter ) return;
346 xmlWriter->startElement( "table:table" );
348 xmlWriter->addAttribute( "table:name", string( sheet->name() ).string() );
349 xmlWriter->addAttribute( "table:print", "false" );
350 xmlWriter->addAttribute( "table:protected", "false" );
351 xmlWriter->addAttribute( "table:style-name", TQString( "ta%1").arg(sheetFormatIndex));
355 while( ci <= sheet->maxColumn() )
357 Column* column = sheet->column( ci, false );
361 unsigned cj = ci + 1;
362 while( cj <= sheet->maxColumn() )
364 const Column* nextColumn = sheet->column( cj, false );
365 if( !nextColumn ) break;
366 if( column->width() != nextColumn->width() ) break;
367 if( column->visible() != nextColumn->visible() ) break;
368 if( column->formatIndex() != nextColumn->formatIndex() ) break;
372 int repeated = cj - ci;
373 processColumnForBody( column, repeated, xmlWriter );
378 xmlWriter->startElement( "table:table-column" );
379 xmlWriter->endElement();
383 for( unsigned i = 0; i <= sheet->maxRow(); i++ )
386 processRowForBody( sheet->row( i, false ), 1, xmlWriter );
389 xmlWriter->endElement();
392void ExcelImport::Private::processSheetForStyle( Sheet* sheet, KoXmlWriter* xmlWriter )
395 if( !xmlWriter ) return;
397 xmlWriter->startElement( "style:style" );
398 xmlWriter->addAttribute( "style:family", "table" );
399 xmlWriter->addAttribute( "style:master-page-name", "Default" );
400 xmlWriter->addAttribute( "style:name", TQString( "ta%1").arg(sheetFormatIndex) );
403 xmlWriter->startElement( "style:table-properties" );
404 xmlWriter->addAttribute( "table:display", sheet->visible() ? "true" : "false" );
405 xmlWriter->addAttribute( "table:writing-mode", "lr-tb" );
406 xmlWriter->endElement();
408 xmlWriter->endElement();
411 while( ci <= sheet->maxColumn() )
413 Column* column = sheet->column( ci, false );
417 unsigned cj = ci + 1;
418 while( cj <= sheet->maxColumn() )
420 Column* nextColumn = sheet->column( cj, false );
421 if( !nextColumn ) break;
422 if( column->width() != nextColumn->width() ) break;
423 if( column->visible() != nextColumn->visible() ) break;
424 if( column->formatIndex() != nextColumn->formatIndex() ) break;
428 int repeated = cj - ci;
429 processColumnForStyle( column, repeated, xmlWriter );
436 for( unsigned i = 0; i <= sheet->maxRow(); i++ )
438 Row* row = sheet->row( i, false );
440 processRowForStyle( row, 1, xmlWriter );
444void ExcelImport::Private::processColumnForBody( Column* column, int repeat, KoXmlWriter* xmlWriter )
446 if( !column ) return;
447 if( !xmlWriter ) return;
449 xmlWriter->startElement( "table:table-column" );
450 xmlWriter->addAttribute( "table:default-style-name", "Default" );
451 xmlWriter->addAttribute( "table:visibility", column->visible() ? "visible" : "collapse" );
452 if(repeat > 1) xmlWriter->addAttribute( "table:number-columns-repeated", repeat );
453 xmlWriter->addAttribute( "table:style-name", TQString( "co%1").arg(columnFormatIndex) );
456 xmlWriter->endElement();
459void ExcelImport::Private::processColumnForStyle( Column* column, int , KoXmlWriter* xmlWriter )
461 if( !column ) return;
462 if( !xmlWriter ) return;
464 xmlWriter->startElement( "style:style" );
465 xmlWriter->addAttribute( "style:family", "table-column" );
466 xmlWriter->addAttribute( "style:name", TQString( "co%1").arg(columnFormatIndex) );
469 xmlWriter->startElement( "style:table-column-properties" );
470 xmlWriter->addAttribute( "fo:break-before", "auto" );
471 xmlWriter->addAttribute( "style:column-width", TQString( "%1in").arg(column->width()/27) );
472 xmlWriter->endElement();
474 xmlWriter->endElement();
477void ExcelImport::Private::processRowForBody( Row* row, int , KoXmlWriter* xmlWriter )
479 if( !xmlWriter ) return;
481 xmlWriter->startElement( "table:table-row" );
482 xmlWriter->endElement();
485 if( !row->sheet() ) return;
489 Sheet* sheet= row->sheet();
490 unsigned rowIndex = row->index();
491 for( unsigned i = 0; i <= sheet->maxColumn(); i++ )
492 if( sheet->cell( i, rowIndex, false ) )
495 xmlWriter->startElement( "table:table-row" );
496 xmlWriter->addAttribute( "table:visibility", row->visible() ? "visible" : "collapse" );
497 xmlWriter->addAttribute( "table:style-name", TQString( "ro%1").arg(rowFormatIndex) );
500 for( int i = 0; i <= lastCol; i++ )
502 Cell* cell = sheet->cell( i, rowIndex, false );
504 processCellForBody( cell, xmlWriter );
508 xmlWriter->startElement( "table:table-cell" );
509 xmlWriter->endElement();
513 xmlWriter->endElement();
516void ExcelImport::Private::processRowForStyle( Row* row, int repeat, KoXmlWriter* xmlWriter )
519 if( !row->sheet() ) return;
520 if( !xmlWriter ) return;
524 Sheet* sheet= row->sheet();
525 unsigned rowIndex = row->index();
526 for( unsigned i = 0; i <= sheet->maxColumn(); i++ )
527 if( sheet->cell( i, rowIndex, false ) )
530 xmlWriter->startElement( "style:style" );
531 xmlWriter->addAttribute( "style:family", "table-row" );
532 if(repeat > 1) xmlWriter->addAttribute( "table:number-rows-repeated", repeat );
533 xmlWriter->addAttribute( "style:name", TQString( "ro%1").arg(rowFormatIndex) );
536 xmlWriter->startElement( "style:table-row-properties" );
537 xmlWriter->addAttribute( "fo:break-before", "auto" );
538 xmlWriter->addAttribute( "style:row-height", TQString( "%1pt").arg(row->height()) );
539 xmlWriter->endElement();
541 xmlWriter->endElement();
543 for( int i = 0; i <= lastCol; i++ )
545 Cell* cell = sheet->cell( i, rowIndex, false );
547 processCellForStyle( cell, xmlWriter );
551static bool isPercentageFormat( const TQString& valueFormat )
553 if( valueFormat.isEmpty() ) return false;
554 if( valueFormat.length() < 1 ) return false;
555 return valueFormat[valueFormat.length()-1] == TQChar( '%');
558static bool isDateFormat( const TQString& valueFormat )
560 TQString vfu = valueFormat.upper();
562 if( vfu == "M/D/YY" ) return true;
563 if( vfu == "M/D/YYYY" ) return true;
564 if( vfu == "MM/DD/YY" ) return true;
565 if( vfu == "MM/DD/YYYY" ) return true;
566 if( vfu == "D-MMM-YY" ) return true;
567 if( vfu == "D\\-MMM\\-YY" ) return true;
568 if( vfu == "D-MMM-YYYY" ) return true;
569 if( vfu == "D\\-MMM\\-YYYY" ) return true;
570 if( vfu == "D-MMM" ) return true;
571 if( vfu == "D\\-MMM" ) return true;
572 if( vfu == "D-MM" ) return true;
573 if( vfu == "D\\-MM" ) return true;
574 if( vfu == "MMM/DD" ) return true;
575 if( vfu == "MMM/D" ) return true;
576 if( vfu == "MM/DD" ) return true;
577 if( vfu == "MM/D" ) return true;
578 if( vfu == "MM/DD/YY" ) return true;
579 if( vfu == "MM/DD/YYYY" ) return true;
580 if( vfu == "YYYY/MM/D" ) return true;
581 if( vfu == "YYYY/MM/DD" ) return true;
582 if( vfu == "YYYY-MM-D" ) return true;
583 if( vfu == "YYYY\\-MM\\-D" ) return true;
584 if( vfu == "YYYY-MM-DD" ) return true;
585 if( vfu == "YYYY\\-MM\\-DD" ) return true;
590static bool isTimeFormat( const TQString& valueFormat )
592 TQString vf = valueFormat;
594 if( vf == "h:mm AM/PM" ) return true;
595 if( vf == "h:mm:ss AM/PM" ) return true;
596 if( vf == "h:mm" ) return true;
597 if( vf == "h:mm:ss" ) return true;
598 if( vf == "[h]:mm:ss" ) return true;
599 if( vf == "[h]:mm" ) return true;
600 if( vf == "[mm]:ss" ) return true;
601 if( vf == "M/D/YY h:mm" ) return true;
602 if( vf == "[ss]" ) return true;
603 if( vf == "mm:ss" ) return true;
604 if( vf == "mm:ss.0" ) return true;
605 if( vf == "[mm]:ss" ) return true;
606 if( vf == "[ss]" ) return true;
611static TQString convertDate( double serialNo )
614 TQDate dd( 1899, 12, 30 );
615 dd = dd.addDays( ( int) serialNo );
616 return dd.toString( "yyyy-MM-dd" );
619static TQString convertTime( double serialNo )
623 tt = tt.addMSecs( tqRound( (serialNo-( int)serialNo) * 86400 * 1000 ) );
624 return tt.toString( "PThhHmmMss,zzz0S" );
627void ExcelImport::Private::processCellForBody( Cell* cell, KoXmlWriter* xmlWriter )
630 if( !xmlWriter ) return;
632 int formatIndex = cell->formatIndex();
634 TQString styleName( "ce");
635 styleName.append( TQString::number( formatIndex ) );
636 xmlWriter->startElement( "table:table-cell" );
637 xmlWriter->addAttribute( "table:style-name", styleName );
639 if( !cell->formula().isEmpty() )
641 TQString formula = string( cell->formula() ).string();
642 xmlWriter->addAttribute( "table:formula", formula.prepend( "=") );
645 const Value& value = cell->value();
649 xmlWriter->addAttribute( "office:value-type", "boolean" );
650 xmlWriter->addAttribute( "office:boolean-value", value. asBoolean() ? "true" : "false" );
654 if( isPercentageStyle[formatIndex] )
656 xmlWriter->addAttribute( "office:value-type", "percentage" );
657 xmlWriter->addAttribute( "office:value", TQString::number( value. asFloat(), 'g', 15 ) );
659 else if( isDateStyle[formatIndex] )
661 xmlWriter->addAttribute( "office:value-type", "date" );
662 xmlWriter->addAttribute( "office:date-value", convertDate( value. asFloat() ) );
664 else if( isTimeStyle[formatIndex] )
666 xmlWriter->addAttribute( "office:value-type", "time" );
667 xmlWriter->addAttribute( "office:time-value", convertTime( value. asFloat() ) );
672 xmlWriter->addAttribute( "office:value-type", "float" );
673 xmlWriter->addAttribute( "office:value", TQString::number( value. asFloat(), 'g', 15 ) );
678 TQString str = string( value. asString() ).string();
679 xmlWriter->addAttribute( "office:value-type", "string" );
680 xmlWriter->addAttribute( "office:string-value", str );
681 xmlWriter->startElement( "text:p" );
682 xmlWriter->addTextNode( str );
683 xmlWriter->endElement();
686 xmlWriter->endElement();
689void ExcelImport::Private::processCellForStyle( Cell* cell, KoXmlWriter* xmlWriter )
692 if( !xmlWriter ) return;
695 if( !styleFormats.contains( cell->formatIndex() ) )
697 styleFormats[ cell->formatIndex() ] = true;
699 const Format& format = cell->sheet()->workbook()->format( cell->formatIndex() );
706 refName = TQString( "N%1").arg(cell->formatIndex());
707 TQString numformat = string( valueFormat ).string();
708 processValueFormat( numformat, refName, xmlWriter );
712 TQString numformat = string( valueFormat ).string();
713 isPercentageStyle[ cell->formatIndex() ] = isPercentageFormat( numformat );
714 isDateStyle[ cell->formatIndex() ] = isDateFormat( numformat );
715 isTimeStyle[ cell->formatIndex() ] = isTimeFormat( numformat );
718 xmlWriter->startElement( "style:style" );
719 xmlWriter->addAttribute( "style:family", "table-cell" );
720 xmlWriter->addAttribute( "style:name", TQString( "ce%1").arg( cell->formatIndex() ) );
721 if( !refName.isEmpty() )
722 xmlWriter->addAttribute( "style:data-style-name", refName );
724 processFormat( &format, xmlWriter );
726 xmlWriter->endElement();
730TQString convertColor( const Color& color )
733 sprintf( buf, "#%02x%02x%02x", color.red, color.green, color.blue );
734 return TQString( buf );
737TQString convertBorder( const Pen& pen )
739 if( pen.style == Pen::NoLine || pen.width == 0 ) return "none";
741 TQString result = TQString::number( pen.width );
746 case Pen::SolidLine: result += "solid "; break;
747 case Pen::DashLine: result += "dashed "; break;
748 case Pen::DotLine: result += "dotted "; break;
749 case Pen::DashDotLine: result += "dot-dash "; break;
750 case Pen::DashDotDotLine: result += "dot-dot-dash "; break;
753 return result + convertColor( pen.color );
756void ExcelImport::Private::processFormat( const Format* format, KoXmlWriter* xmlWriter )
758 if( !format ) return;
759 if( !xmlWriter ) return;
768 xmlWriter->startElement( "style:text-properties" );
771 xmlWriter->addAttribute( "fo:font-weight", "bold" );
774 xmlWriter->addAttribute( "fo:font-style", "italic" );
778 xmlWriter->addAttribute( "style:text-underline-style", "solid" );
779 xmlWriter->addAttribute( "style:text-underline-width", "auto" );
780 xmlWriter->addAttribute( "style:text-underline-color", "font-color" );
784 xmlWriter->addAttribute( "style:text-line-through-style", "solid" );
787 xmlWriter->addAttribute( "style:text-position", "sub" );
790 xmlWriter->addAttribute( "style:text-position", "super" );
793 xmlWriter->addAttribute( "style:font-name", string(font. fontFamily()).string() );
795 xmlWriter->addAttribute( "fo:font-size", TQString( "%1pt").arg(font. fontSize()) );
797 xmlWriter->addAttribute( "fo:color", convertColor( font. color() ) );
799 xmlWriter->endElement();
802 xmlWriter->startElement( "style:table-cell-properties" );
805 switch( align. alignY() ) {
806 case Format::Top: xmlWriter->addAttribute( "style:vertical-align", "top" ); break;
807 case Format::Middle: xmlWriter->addAttribute( "style:vertical-align", "middle" ); break;
808 case Format::Bottom: xmlWriter->addAttribute( "style:vertical-align", "bottom" ); break;
811 xmlWriter->addAttribute( "fo:wrap-option", align. wrap() ? "wrap" : "no-wrap" );
818 xmlWriter->addAttribute( "fo:border-left", convertBorder( borders. leftBorder() ) );
819 xmlWriter->addAttribute( "fo:border-right", convertBorder( borders. rightBorder() ) );
820 xmlWriter->addAttribute( "fo:border-top", convertBorder( borders. topBorder() ) );
821 xmlWriter->addAttribute( "fo:border-bottom", convertBorder( borders. bottomBorder() ) );
825 if( !back. isNull() && back. pattern() != FormatBackground::EmptyPattern )
828 if( back. pattern() == FormatBackground::SolidPattern )
831 xmlWriter->addAttribute( "fo:background-color", convertColor( backColor ) );
835 xmlWriter->endElement();
837 xmlWriter->startElement( "style:paragraph-properties" );
840 switch( align. alignX() ) {
841 case Format::Left: xmlWriter->addAttribute( "fo:text-align", "start" ); break;
842 case Format::Center: xmlWriter->addAttribute( "fo:text-align", "center" ); break;
843 case Format::Right: xmlWriter->addAttribute( "fo:text-align", "end" ); break;
847 xmlWriter->addAttribute( "fo:margin-left", TQString::number( align. indentLevel() ) + "0pt" );
849 xmlWriter->endElement();
852void ExcelImport::Private::processValueFormat( TQString valueFormat, TQString refName,
853KoXmlWriter* xmlWriter )
863 if( valueFormat == "0")
865 xmlWriter->startElement( "number:number-style" );
866 xmlWriter->addAttribute( "style:name", refName );
867 xmlWriter->addAttribute( "style:family", "data-style" );
868 xmlWriter->startElement( "number:number" );
869 xmlWriter->addAttribute( "number:decimal-places", 0 );
870 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
871 xmlWriter->endElement();
872 xmlWriter->endElement();
874 else if( valueFormat == "0.0")
876 xmlWriter->startElement( "number:number-style" );
877 xmlWriter->addAttribute( "style:name", refName );
878 xmlWriter->addAttribute( "style:family", "data-style" );
879 xmlWriter->startElement( "number:number" );
880 xmlWriter->addAttribute( "number:decimal-places", 1 );
881 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
882 xmlWriter->endElement();
883 xmlWriter->endElement();
885 else if( valueFormat == "0.00")
887 xmlWriter->startElement( "number:number-style" );
888 xmlWriter->addAttribute( "style:name", refName );
889 xmlWriter->addAttribute( "style:family", "data-style" );
890 xmlWriter->startElement( "number:number" );
891 xmlWriter->addAttribute( "number:decimal-places", 2 );
892 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
893 xmlWriter->endElement();
894 xmlWriter->endElement();
896 else if( valueFormat == "0.000")
898 xmlWriter->startElement( "number:number-style" );
899 xmlWriter->addAttribute( "style:name", refName );
900 xmlWriter->addAttribute( "style:family", "data-style" );
901 xmlWriter->startElement( "number:number" );
902 xmlWriter->addAttribute( "number:decimal-places", 3 );
903 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
904 xmlWriter->endElement();
905 xmlWriter->endElement();
907 else if( valueFormat == "0.0000")
909 xmlWriter->startElement( "number:number-style" );
910 xmlWriter->addAttribute( "style:name", refName );
911 xmlWriter->addAttribute( "style:family", "data-style" );
912 xmlWriter->startElement( "number:number" );
913 xmlWriter->addAttribute( "number:decimal-places", 4 );
914 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
915 xmlWriter->endElement();
916 xmlWriter->endElement();
918 else if( valueFormat == "0.00000")
920 xmlWriter->startElement( "number:number-style" );
921 xmlWriter->addAttribute( "style:name", refName );
922 xmlWriter->addAttribute( "style:family", "data-style" );
923 xmlWriter->startElement( "number:number" );
924 xmlWriter->addAttribute( "number:decimal-places", 5 );
925 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
926 xmlWriter->endElement();
927 xmlWriter->endElement();
929 else if( valueFormat == "0.000000")
931 xmlWriter->startElement( "number:number-style" );
932 xmlWriter->addAttribute( "style:name", refName );
933 xmlWriter->addAttribute( "style:family", "data-style" );
934 xmlWriter->startElement( "number:number" );
935 xmlWriter->addAttribute( "number:decimal-places", 6 );
936 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
937 xmlWriter->endElement();
938 xmlWriter->endElement();
940 else if( valueFormat == "0.0000000")
942 xmlWriter->startElement( "number:number-style" );
943 xmlWriter->addAttribute( "style:name", refName );
944 xmlWriter->addAttribute( "style:family", "data-style" );
945 xmlWriter->startElement( "number:number" );
946 xmlWriter->addAttribute( "number:decimal-places", 7 );
947 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
948 xmlWriter->endElement();
949 xmlWriter->endElement();
951 else if( valueFormat == "0.00000000")
953 xmlWriter->startElement( "number:number-style" );
954 xmlWriter->addAttribute( "style:name", refName );
955 xmlWriter->addAttribute( "style:family", "data-style" );
956 xmlWriter->startElement( "number:number" );
957 xmlWriter->addAttribute( "number:decimal-places", 8 );
958 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
959 xmlWriter->endElement();
960 xmlWriter->endElement();
962 else if( valueFormat == "0.000000000")
964 xmlWriter->startElement( "number:number-style" );
965 xmlWriter->addAttribute( "style:name", refName );
966 xmlWriter->addAttribute( "style:family", "data-style" );
967 xmlWriter->startElement( "number:number" );
968 xmlWriter->addAttribute( "number:decimal-places", 9 );
969 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
970 xmlWriter->endElement();
971 xmlWriter->endElement();
973 else if( valueFormat == "0.0000000000")
975 xmlWriter->startElement( "number:number-style" );
976 xmlWriter->addAttribute( "style:name", refName );
977 xmlWriter->addAttribute( "style:family", "data-style" );
978 xmlWriter->startElement( "number:number" );
979 xmlWriter->addAttribute( "number:decimal-places", 10 );
980 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
981 xmlWriter->endElement();
982 xmlWriter->endElement();
984 else if( valueFormat == "0.00000000000")
986 xmlWriter->startElement( "number:number-style" );
987 xmlWriter->addAttribute( "style:name", refName );
988 xmlWriter->addAttribute( "style:family", "data-style" );
989 xmlWriter->startElement( "number:number" );
990 xmlWriter->addAttribute( "number:decimal-places", 11 );
991 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
992 xmlWriter->endElement();
993 xmlWriter->endElement();
995 else if( valueFormat == "0.000000000000")
997 xmlWriter->startElement( "number:number-style" );
998 xmlWriter->addAttribute( "style:name", refName );
999 xmlWriter->addAttribute( "style:family", "data-style" );
1000 xmlWriter->startElement( "number:number" );
1001 xmlWriter->addAttribute( "number:decimal-places", 12 );
1002 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1003 xmlWriter->endElement();
1004 xmlWriter->endElement();
1006 else if( valueFormat == "0.0000000000000")
1008 xmlWriter->startElement( "number:number-style" );
1009 xmlWriter->addAttribute( "style:name", refName );
1010 xmlWriter->addAttribute( "style:family", "data-style" );
1011 xmlWriter->startElement( "number:number" );
1012 xmlWriter->addAttribute( "number:decimal-places", 13 );
1013 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1014 xmlWriter->endElement();
1015 xmlWriter->endElement();
1017 else if( valueFormat == "0.00000000000000")
1019 xmlWriter->startElement( "number:number-style" );
1020 xmlWriter->addAttribute( "style:name", refName );
1021 xmlWriter->addAttribute( "style:family", "data-style" );
1022 xmlWriter->startElement( "number:number" );
1023 xmlWriter->addAttribute( "number:decimal-places", 14 );
1024 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1025 xmlWriter->endElement();
1026 xmlWriter->endElement();
1028 else if( valueFormat == "0.000000000000000")
1030 xmlWriter->startElement( "number:number-style" );
1031 xmlWriter->addAttribute( "style:name", refName );
1032 xmlWriter->addAttribute( "style:family", "data-style" );
1033 xmlWriter->startElement( "number:number" );
1034 xmlWriter->addAttribute( "number:decimal-places", 15 );
1035 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1036 xmlWriter->endElement();
1037 xmlWriter->endElement();
1039 else if( valueFormat == "0.0000000000000000")
1041 xmlWriter->startElement( "number:number-style" );
1042 xmlWriter->addAttribute( "style:name", refName );
1043 xmlWriter->addAttribute( "style:family", "data-style" );
1044 xmlWriter->startElement( "number:number" );
1045 xmlWriter->addAttribute( "number:decimal-places", 16 );
1046 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1047 xmlWriter->endElement();
1048 xmlWriter->endElement();
1050 else if( valueFormat == "0E+00")
1052 xmlWriter->startElement( "number:number-style" );
1053 xmlWriter->addAttribute( "style:name", refName );
1054 xmlWriter->addAttribute( "style:family", "data-style" );
1055 xmlWriter->startElement( "number:scientific-number" );
1056 xmlWriter->addAttribute( "number:decimal-places", 0 );
1057 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1058 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1059 xmlWriter->endElement();
1060 xmlWriter->endElement();
1062 else if( valueFormat == "0.0E+00")
1064 xmlWriter->startElement( "number:number-style" );
1065 xmlWriter->addAttribute( "style:name", refName );
1066 xmlWriter->addAttribute( "style:family", "data-style" );
1067 xmlWriter->startElement( "number:scientific-number" );
1068 xmlWriter->addAttribute( "number:decimal-places", 1 );
1069 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1070 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1071 xmlWriter->endElement();
1072 xmlWriter->endElement();
1074 else if( valueFormat == "0.00E+00")
1076 xmlWriter->startElement( "number:number-style" );
1077 xmlWriter->addAttribute( "style:name", refName );
1078 xmlWriter->addAttribute( "style:family", "data-style" );
1079 xmlWriter->startElement( "number:scientific-number" );
1080 xmlWriter->addAttribute( "number:decimal-places", 2 );
1081 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1082 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1083 xmlWriter->endElement();
1084 xmlWriter->endElement();
1086 else if( valueFormat == "0.000E+00")
1088 xmlWriter->startElement( "number:number-style" );
1089 xmlWriter->addAttribute( "style:name", refName );
1090 xmlWriter->addAttribute( "style:family", "data-style" );
1091 xmlWriter->startElement( "number:scientific-number" );
1092 xmlWriter->addAttribute( "number:decimal-places", 3 );
1093 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1094 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1095 xmlWriter->endElement();
1096 xmlWriter->endElement();
1098 else if( valueFormat == "0.0000E+00")
1100 xmlWriter->startElement( "number:number-style" );
1101 xmlWriter->addAttribute( "style:name", refName );
1102 xmlWriter->addAttribute( "style:family", "data-style" );
1103 xmlWriter->startElement( "number:scientific-number" );
1104 xmlWriter->addAttribute( "number:decimal-places", 4 );
1105 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1106 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1107 xmlWriter->endElement();
1108 xmlWriter->endElement();
1110 else if( valueFormat == "0.00000E+00")
1112 xmlWriter->startElement( "number:number-style" );
1113 xmlWriter->addAttribute( "style:name", refName );
1114 xmlWriter->addAttribute( "style:family", "data-style" );
1115 xmlWriter->startElement( "number:scientific-number" );
1116 xmlWriter->addAttribute( "number:decimal-places", 5 );
1117 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1118 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1119 xmlWriter->endElement();
1120 xmlWriter->endElement();
1122 else if( valueFormat == "0.000000E+00")
1124 xmlWriter->startElement( "number:number-style" );
1125 xmlWriter->addAttribute( "style:name", refName );
1126 xmlWriter->addAttribute( "style:family", "data-style" );
1127 xmlWriter->startElement( "number:scientific-number" );
1128 xmlWriter->addAttribute( "number:decimal-places", 6 );
1129 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1130 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1131 xmlWriter->endElement();
1132 xmlWriter->endElement();
1134 else if( valueFormat == "0.0000000E+00")
1136 xmlWriter->startElement( "number:number-style" );
1137 xmlWriter->addAttribute( "style:name", refName );
1138 xmlWriter->addAttribute( "style:family", "data-style" );
1139 xmlWriter->startElement( "number:scientific-number" );
1140 xmlWriter->addAttribute( "number:decimal-places", 7 );
1141 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1142 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1143 xmlWriter->endElement();
1144 xmlWriter->endElement();
1146 else if( valueFormat == "0.00000000E+00")
1148 xmlWriter->startElement( "number:number-style" );
1149 xmlWriter->addAttribute( "style:name", refName );
1150 xmlWriter->addAttribute( "style:family", "data-style" );
1151 xmlWriter->startElement( "number:scientific-number" );
1152 xmlWriter->addAttribute( "number:decimal-places", 8 );
1153 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1154 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1155 xmlWriter->endElement();
1156 xmlWriter->endElement();
1158 else if( valueFormat == "0.000000000E+00")
1160 xmlWriter->startElement( "number:number-style" );
1161 xmlWriter->addAttribute( "style:name", refName );
1162 xmlWriter->addAttribute( "style:family", "data-style" );
1163 xmlWriter->startElement( "number:scientific-number" );
1164 xmlWriter->addAttribute( "number:decimal-places", 9 );
1165 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1166 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1167 xmlWriter->endElement();
1168 xmlWriter->endElement();
1170 else if( valueFormat == "0.0000000000E+00")
1172 xmlWriter->startElement( "number:number-style" );
1173 xmlWriter->addAttribute( "style:name", refName );
1174 xmlWriter->addAttribute( "style:family", "data-style" );
1175 xmlWriter->startElement( "number:scientific-number" );
1176 xmlWriter->addAttribute( "number:decimal-places", 10 );
1177 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1178 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1179 xmlWriter->endElement();
1180 xmlWriter->endElement();
1182 else if( valueFormat == "0.00000000000E+00")
1184 xmlWriter->startElement( "number:number-style" );
1185 xmlWriter->addAttribute( "style:name", refName );
1186 xmlWriter->addAttribute( "style:family", "data-style" );
1187 xmlWriter->startElement( "number:scientific-number" );
1188 xmlWriter->addAttribute( "number:decimal-places", 11 );
1189 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1190 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1191 xmlWriter->endElement();
1192 xmlWriter->endElement();
1194 else if( valueFormat == "0.000000000000E+00")
1196 xmlWriter->startElement( "number:number-style" );
1197 xmlWriter->addAttribute( "style:name", refName );
1198 xmlWriter->addAttribute( "style:family", "data-style" );
1199 xmlWriter->startElement( "number:scientific-number" );
1200 xmlWriter->addAttribute( "number:decimal-places", 12 );
1201 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1202 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1203 xmlWriter->endElement();
1204 xmlWriter->endElement();
1206 else if( valueFormat == "0.0000000000000E+00")
1208 xmlWriter->startElement( "number:number-style" );
1209 xmlWriter->addAttribute( "style:name", refName );
1210 xmlWriter->addAttribute( "style:family", "data-style" );
1211 xmlWriter->startElement( "number:scientific-number" );
1212 xmlWriter->addAttribute( "number:decimal-places", 13 );
1213 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1214 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1215 xmlWriter->endElement();
1216 xmlWriter->endElement();
1218 else if( valueFormat == "0.00000000000000E+00")
1220 xmlWriter->startElement( "number:number-style" );
1221 xmlWriter->addAttribute( "style:name", refName );
1222 xmlWriter->addAttribute( "style:family", "data-style" );
1223 xmlWriter->startElement( "number:scientific-number" );
1224 xmlWriter->addAttribute( "number:decimal-places", 14 );
1225 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1226 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1227 xmlWriter->endElement();
1228 xmlWriter->endElement();
1230 else if( valueFormat == "0.000000000000000E+00")
1232 xmlWriter->startElement( "number:number-style" );
1233 xmlWriter->addAttribute( "style:name", refName );
1234 xmlWriter->addAttribute( "style:family", "data-style" );
1235 xmlWriter->startElement( "number:scientific-number" );
1236 xmlWriter->addAttribute( "number:decimal-places", 16 );
1237 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1238 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1239 xmlWriter->endElement();
1240 xmlWriter->endElement();
1242 else if( valueFormat == "0.0000000000000000E+00")
1244 xmlWriter->startElement( "number:number-style" );
1245 xmlWriter->addAttribute( "style:name", refName );
1246 xmlWriter->addAttribute( "style:family", "data-style" );
1247 xmlWriter->startElement( "number:scientific-number" );
1248 xmlWriter->addAttribute( "number:decimal-places", 17 );
1249 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1250 xmlWriter->addAttribute( "number:min-exponent-digits", 2 );
1251 xmlWriter->endElement();
1252 xmlWriter->endElement();
1254 else if( valueFormat == "0%")
1256 xmlWriter->startElement( "number:percentage-style" );
1257 xmlWriter->addAttribute( "style:name", refName );
1258 xmlWriter->startElement( "number:number" );
1259 xmlWriter->addAttribute( "number:decimal-places", 0 );
1260 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1261 xmlWriter->endElement();
1262 xmlWriter->startElement( "number:text" );
1263 xmlWriter->addTextNode( "%" );
1264 xmlWriter->endElement();
1265 xmlWriter->endElement();
1267 else if( valueFormat == "0.0%")
1269 xmlWriter->startElement( "number:percentage-style" );
1270 xmlWriter->addAttribute( "style:name", refName );
1271 xmlWriter->startElement( "number:number" );
1272 xmlWriter->addAttribute( "number:decimal-places", 1 );
1273 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1274 xmlWriter->endElement();
1275 xmlWriter->startElement( "number:text" );
1276 xmlWriter->addTextNode( "%" );
1277 xmlWriter->endElement();
1278 xmlWriter->endElement();
1280 else if( valueFormat == "0.00%")
1282 xmlWriter->startElement( "number:percentage-style" );
1283 xmlWriter->addAttribute( "style:name", refName );
1284 xmlWriter->startElement( "number:number" );
1285 xmlWriter->addAttribute( "number:decimal-places", 2 );
1286 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1287 xmlWriter->endElement();
1288 xmlWriter->startElement( "number:text" );
1289 xmlWriter->addTextNode( "%" );
1290 xmlWriter->endElement();
1291 xmlWriter->endElement();
1293 else if( valueFormat == "0.000%")
1295 xmlWriter->startElement( "number:percentage-style" );
1296 xmlWriter->addAttribute( "style:name", refName );
1297 xmlWriter->startElement( "number:number" );
1298 xmlWriter->addAttribute( "number:decimal-places", 3 );
1299 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1300 xmlWriter->endElement();
1301 xmlWriter->startElement( "number:text" );
1302 xmlWriter->addTextNode( "%" );
1303 xmlWriter->endElement();
1304 xmlWriter->endElement();
1306 else if( valueFormat == "0.0000%")
1308 xmlWriter->startElement( "number:percentage-style" );
1309 xmlWriter->addAttribute( "style:name", refName );
1310 xmlWriter->startElement( "number:number" );
1311 xmlWriter->addAttribute( "number:decimal-places", 4 );
1312 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1313 xmlWriter->endElement();
1314 xmlWriter->startElement( "number:text" );
1315 xmlWriter->addTextNode( "%" );
1316 xmlWriter->endElement();
1317 xmlWriter->endElement();
1319 else if( valueFormat == "0.00000%")
1321 xmlWriter->startElement( "number:percentage-style" );
1322 xmlWriter->addAttribute( "style:name", refName );
1323 xmlWriter->startElement( "number:number" );
1324 xmlWriter->addAttribute( "number:decimal-places", 5 );
1325 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1326 xmlWriter->endElement();
1327 xmlWriter->startElement( "number:text" );
1328 xmlWriter->addTextNode( "%" );
1329 xmlWriter->endElement();
1330 xmlWriter->endElement();
1332 else if( valueFormat == "0.000000%")
1334 xmlWriter->startElement( "number:percentage-style" );
1335 xmlWriter->addAttribute( "style:name", refName );
1336 xmlWriter->startElement( "number:number" );
1337 xmlWriter->addAttribute( "number:decimal-places", 6 );
1338 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1339 xmlWriter->endElement();
1340 xmlWriter->startElement( "number:text" );
1341 xmlWriter->addTextNode( "%" );
1342 xmlWriter->endElement();
1343 xmlWriter->endElement();
1345 else if( valueFormat == "0.0000000%")
1347 xmlWriter->startElement( "number:percentage-style" );
1348 xmlWriter->addAttribute( "style:name", refName );
1349 xmlWriter->startElement( "number:number" );
1350 xmlWriter->addAttribute( "number:decimal-places", 7 );
1351 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1352 xmlWriter->endElement();
1353 xmlWriter->startElement( "number:text" );
1354 xmlWriter->addTextNode( "%" );
1355 xmlWriter->endElement();
1356 xmlWriter->endElement();
1358 else if( valueFormat == "0.00000000%")
1360 xmlWriter->startElement( "number:percentage-style" );
1361 xmlWriter->addAttribute( "style:name", refName );
1362 xmlWriter->startElement( "number:number" );
1363 xmlWriter->addAttribute( "number:decimal-places", 8 );
1364 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1365 xmlWriter->endElement();
1366 xmlWriter->startElement( "number:text" );
1367 xmlWriter->addTextNode( "%" );
1368 xmlWriter->endElement();
1369 xmlWriter->endElement();
1371 else if( valueFormat == "0.000000000%")
1373 xmlWriter->startElement( "number:percentage-style" );
1374 xmlWriter->addAttribute( "style:name", refName );
1375 xmlWriter->startElement( "number:number" );
1376 xmlWriter->addAttribute( "number:decimal-places", 9 );
1377 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1378 xmlWriter->endElement();
1379 xmlWriter->startElement( "number:text" );
1380 xmlWriter->addTextNode( "%" );
1381 xmlWriter->endElement();
1382 xmlWriter->endElement();
1384 else if( valueFormat == "0.0000000000%")
1386 xmlWriter->startElement( "number:percentage-style" );
1387 xmlWriter->addAttribute( "style:name", refName );
1388 xmlWriter->startElement( "number:number" );
1389 xmlWriter->addAttribute( "number:decimal-places", 10 );
1390 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1391 xmlWriter->endElement();
1392 xmlWriter->startElement( "number:text" );
1393 xmlWriter->addTextNode( "%" );
1394 xmlWriter->endElement();
1395 xmlWriter->endElement();
1397 else if( valueFormat == "0.00000000000%")
1399 xmlWriter->startElement( "number:percentage-style" );
1400 xmlWriter->addAttribute( "style:name", refName );
1401 xmlWriter->startElement( "number:number" );
1402 xmlWriter->addAttribute( "number:decimal-places", 11 );
1403 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1404 xmlWriter->endElement();
1405 xmlWriter->startElement( "number:text" );
1406 xmlWriter->addTextNode( "%" );
1407 xmlWriter->endElement();
1408 xmlWriter->endElement();
1410 else if( valueFormat == "0.000000000000%")
1412 xmlWriter->startElement( "number:percentage-style" );
1413 xmlWriter->addAttribute( "style:name", refName );
1414 xmlWriter->startElement( "number:number" );
1415 xmlWriter->addAttribute( "number:decimal-places", 12 );
1416 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1417 xmlWriter->endElement();
1418 xmlWriter->startElement( "number:text" );
1419 xmlWriter->addTextNode( "%" );
1420 xmlWriter->endElement();
1421 xmlWriter->endElement();
1423 else if( valueFormat == "0.0000000000000%")
1425 xmlWriter->startElement( "number:percentage-style" );
1426 xmlWriter->addAttribute( "style:name", refName );
1427 xmlWriter->startElement( "number:number" );
1428 xmlWriter->addAttribute( "number:decimal-places", 13 );
1429 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1430 xmlWriter->endElement();
1431 xmlWriter->startElement( "number:text" );
1432 xmlWriter->addTextNode( "%" );
1433 xmlWriter->endElement();
1434 xmlWriter->endElement();
1436 else if( valueFormat == "0.00000000000000%")
1438 xmlWriter->startElement( "number:percentage-style" );
1439 xmlWriter->addAttribute( "style:name", refName );
1440 xmlWriter->startElement( "number:number" );
1441 xmlWriter->addAttribute( "number:decimal-places", 14 );
1442 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1443 xmlWriter->endElement();
1444 xmlWriter->startElement( "number:text" );
1445 xmlWriter->addTextNode( "%" );
1446 xmlWriter->endElement();
1447 xmlWriter->endElement();
1449 else if( valueFormat == "0.000000000000000%")
1451 xmlWriter->startElement( "number:percentage-style" );
1452 xmlWriter->addAttribute( "style:name", refName );
1453 xmlWriter->startElement( "number:number" );
1454 xmlWriter->addAttribute( "number:decimal-places", 15 );
1455 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1456 xmlWriter->endElement();
1457 xmlWriter->startElement( "number:text" );
1458 xmlWriter->addTextNode( "%" );
1459 xmlWriter->endElement();
1460 xmlWriter->endElement();
1462 else if( valueFormat == "0.0000000000000000%")
1464 xmlWriter->startElement( "number:percentage-style" );
1465 xmlWriter->addAttribute( "style:name", refName );
1466 xmlWriter->startElement( "number:number" );
1467 xmlWriter->addAttribute( "number:decimal-places", 16 );
1468 xmlWriter->addAttribute( "number:min-integer-digits", 1 );
1469 xmlWriter->endElement();
1470 xmlWriter->startElement( "number:text" );
1471 xmlWriter->addTextNode( "%" );
1472 xmlWriter->endElement();
1473 xmlWriter->endElement();
1475 else if( valueFormat.lower() == "m/d/yy")
1477 xmlWriter->startElement( "number:date-style" );
1478 xmlWriter->addAttribute( "style:name", refName );
1479 xmlWriter->addAttribute( "style:family", "data-style" );
1481 xmlWriter->startElement( "number:month" );
1482 xmlWriter->addAttribute( "number:textual", "false" );
1483 xmlWriter->addAttribute( "number:style", "short" );
1484 xmlWriter->endElement();
1486 xmlWriter->startElement( "number:text");
1487 xmlWriter->addTextNode( "/" );
1488 xmlWriter->endElement();
1490 xmlWriter->startElement( "number:day" );
1491 xmlWriter->addAttribute( "number:style", "short" );
1492 xmlWriter->endElement();
1494 xmlWriter->startElement( "number:text");
1495 xmlWriter->addTextNode( "/" );
1496 xmlWriter->endElement();
1498 xmlWriter->startElement( "number:year" );
1499 xmlWriter->addAttribute( "number:style", "short" );
1500 xmlWriter->endElement();
1502 xmlWriter->endElement();
1504 else if( valueFormat.lower() == "m/d/yyyy")
1506 xmlWriter->startElement( "number:date-style" );
1507 xmlWriter->addAttribute( "style:name", refName );
1508 xmlWriter->addAttribute( "style:family", "data-style" );
1510 xmlWriter->startElement( "number:month" );
1511 xmlWriter->addAttribute( "number:textual", "false" );
1512 xmlWriter->addAttribute( "number:style", "short" );
1513 xmlWriter->endElement();
1515 xmlWriter->startElement( "number:text");
1516 xmlWriter->addTextNode( "/" );
1517 xmlWriter->endElement();
1519 xmlWriter->startElement( "number:day" );
1520 xmlWriter->addAttribute( "number:style", "short" );
1521 xmlWriter->endElement();
1523 xmlWriter->startElement( "number:text");
1524 xmlWriter->addTextNode( "/" );
1525 xmlWriter->endElement();
1527 xmlWriter->startElement( "number:year" );
1528 xmlWriter->addAttribute( "number:style", "long" );
1529 xmlWriter->endElement();
1531 xmlWriter->endElement();
1533 else if( (valueFormat.lower() == "d-mmm-yy") || (valueFormat.lower() == "d\\-mmm\\-yy") )
1535 xmlWriter->startElement( "number:date-style" );
1536 xmlWriter->addAttribute( "style:name", refName );
1537 xmlWriter->addAttribute( "style:family", "data-style" );
1539 xmlWriter->startElement( "number:day" );
1540 xmlWriter->addAttribute( "number:style", "short" );
1541 xmlWriter->endElement();
1543 xmlWriter->startElement( "number:text");
1544 xmlWriter->addTextNode( "-" );
1545 xmlWriter->endElement();
1547 xmlWriter->startElement( "number:month" );
1548 xmlWriter->addAttribute( "number:textual", "true" );
1549 xmlWriter->addAttribute( "number:style", "short" );
1550 xmlWriter->endElement();
1552 xmlWriter->startElement( "number:text");
1553 xmlWriter->addTextNode( "-" );
1554 xmlWriter->endElement();
1556 xmlWriter->startElement( "number:year" );
1557 xmlWriter->addAttribute( "number:style", "short" );
1558 xmlWriter->endElement();
1560 xmlWriter->endElement();
1562 else if( (valueFormat.lower() == "d-mmm-yyyy") || (valueFormat.lower() == "d\\-mmm\\-yyyy") )
1564 xmlWriter->startElement( "number:date-style" );
1565 xmlWriter->addAttribute( "style:name", refName );
1566 xmlWriter->addAttribute( "style:family", "data-style" );
1568 xmlWriter->startElement( "number:day" );
1569 xmlWriter->addAttribute( "number:style", "short" );
1570 xmlWriter->endElement();
1572 xmlWriter->startElement( "number:text");
1573 xmlWriter->addTextNode( "-" );
1574 xmlWriter->endElement();
1576 xmlWriter->startElement( "number:month" );
1577 xmlWriter->addAttribute( "number:textual", "true" );
1578 xmlWriter->addAttribute( "number:style", "short" );
1579 xmlWriter->endElement();
1581 xmlWriter->startElement( "number:text");
1582 xmlWriter->addTextNode( "-" );
1583 xmlWriter->endElement();
1585 xmlWriter->startElement( "number:year" );
1586 xmlWriter->addAttribute( "number:style", "long" );
1587 xmlWriter->endElement();
1589 xmlWriter->endElement();
1591 else if( (valueFormat.lower() == "d-mmm") || (valueFormat.lower() == "d\\-mmm") )
1593 xmlWriter->startElement( "number:date-style" );
1594 xmlWriter->addAttribute( "style:name", refName );
1595 xmlWriter->addAttribute( "style:family", "data-style" );
1597 xmlWriter->startElement( "number:day" );
1598 xmlWriter->addAttribute( "number:style", "short" );
1599 xmlWriter->endElement();
1601 xmlWriter->startElement( "number:text");
1602 xmlWriter->addTextNode( "-" );
1603 xmlWriter->endElement();
1605 xmlWriter->startElement( "number:month" );
1606 xmlWriter->addAttribute( "number:textual", "true" );
1607 xmlWriter->addAttribute( "number:style", "short" );
1608 xmlWriter->endElement();
1610 xmlWriter->endElement();
1612 else if( (valueFormat.lower() == "d-mm") || (valueFormat.lower() == "d\\-mm") )
1614 xmlWriter->startElement( "number:date-style" );
1615 xmlWriter->addAttribute( "style:name", refName );
1616 xmlWriter->addAttribute( "style:family", "data-style" );
1618 xmlWriter->startElement( "number:day" );
1619 xmlWriter->addAttribute( "number:style", "short" );
1620 xmlWriter->endElement();
1622 xmlWriter->startElement( "number:text");
1623 xmlWriter->addTextNode( "-" );
1624 xmlWriter->endElement();
1626 xmlWriter->startElement( "number:month" );
1627 xmlWriter->addAttribute( "number:textual", "false" );
1628 xmlWriter->addAttribute( "number:style", "long" );
1629 xmlWriter->endElement();
1631 xmlWriter->endElement();
1633 else if( valueFormat.lower() == "mmm/d" )
1635 xmlWriter->startElement( "number:date-style" );
1636 xmlWriter->addAttribute( "style:name", refName );
1637 xmlWriter->addAttribute( "style:family", "data-style" );
1639 xmlWriter->startElement( "number:month" );
1640 xmlWriter->addAttribute( "number:textual", "true" );
1641 xmlWriter->addAttribute( "number:style", "short" );
1642 xmlWriter->endElement();
1644 xmlWriter->startElement( "number:text");
1645 xmlWriter->addTextNode( "/" );
1646 xmlWriter->endElement();
1648 xmlWriter->startElement( "number:day" );
1649 xmlWriter->addAttribute( "number:style", "short" );
1650 xmlWriter->endElement();
1652 xmlWriter->endElement();
1654 else if( valueFormat.lower() == "mmm/dd" )
1656 xmlWriter->startElement( "number:date-style" );
1657 xmlWriter->addAttribute( "style:name", refName );
1658 xmlWriter->addAttribute( "style:family", "data-style" );
1660 xmlWriter->startElement( "number:month" );
1661 xmlWriter->addAttribute( "number:textual", "true" );
1662 xmlWriter->addAttribute( "number:style", "short" );
1663 xmlWriter->endElement();
1665 xmlWriter->startElement( "number:text");
1666 xmlWriter->addTextNode( "/" );
1667 xmlWriter->endElement();
1669 xmlWriter->startElement( "number:day" );
1670 xmlWriter->addAttribute( "number:style", "long" );
1671 xmlWriter->endElement();
1673 xmlWriter->endElement();
1675 else if( valueFormat.lower() == "mm/d" )
1677 xmlWriter->startElement( "number:date-style" );
1678 xmlWriter->addAttribute( "style:name", refName );
1679 xmlWriter->addAttribute( "style:family", "data-style" );
1681 xmlWriter->startElement( "number:month" );
1682 xmlWriter->addAttribute( "number:textual", "false" );
1683 xmlWriter->addAttribute( "number:style", "long" );
1684 xmlWriter->endElement();
1686 xmlWriter->startElement( "number:text");
1687 xmlWriter->addTextNode( "/" );
1688 xmlWriter->endElement();
1690 xmlWriter->startElement( "number:day" );
1691 xmlWriter->addAttribute( "number:style", "short" );
1692 xmlWriter->endElement();
1694 xmlWriter->endElement();
1696 else if( valueFormat.lower() == "mm/dd" )
1698 xmlWriter->startElement( "number:date-style" );
1699 xmlWriter->addAttribute( "style:name", refName );
1700 xmlWriter->addAttribute( "style:family", "data-style" );
1702 xmlWriter->startElement( "number:month" );
1703 xmlWriter->addAttribute( "number:textual", "false" );
1704 xmlWriter->addAttribute( "number:style", "long" );
1705 xmlWriter->endElement();
1707 xmlWriter->startElement( "number:text");
1708 xmlWriter->addTextNode( "/" );
1709 xmlWriter->endElement();
1711 xmlWriter->startElement( "number:day" );
1712 xmlWriter->addAttribute( "number:style", "long" );
1713 xmlWriter->endElement();
1715 xmlWriter->endElement();
1717 else if( valueFormat.lower() == "mm/dd/yy" )
1719 xmlWriter->startElement( "number:date-style" );
1720 xmlWriter->addAttribute( "style:name", refName );
1721 xmlWriter->addAttribute( "style:family", "data-style" );
1723 xmlWriter->startElement( "number:month" );
1724 xmlWriter->addAttribute( "number:textual", "false" );
1725 xmlWriter->addAttribute( "number:style", "long" );
1726 xmlWriter->endElement();
1728 xmlWriter->startElement( "number:text");
1729 xmlWriter->addTextNode( "/" );
1730 xmlWriter->endElement();
1732 xmlWriter->startElement( "number:day" );
1733 xmlWriter->addAttribute( "number:style", "long" );
1734 xmlWriter->endElement();
1736 xmlWriter->startElement( "number:text");
1737 xmlWriter->addTextNode( "/" );
1738 xmlWriter->endElement();
1740 xmlWriter->startElement( "number:year" );
1741 xmlWriter->addAttribute( "number:style", "short" );
1742 xmlWriter->endElement();
1744 xmlWriter->endElement();
1746 else if( valueFormat.lower() == "mm/dd/yyyy" )
1748 xmlWriter->startElement( "number:date-style" );
1749 xmlWriter->addAttribute( "style:name", refName );
1750 xmlWriter->addAttribute( "style:family", "data-style" );
1752 xmlWriter->startElement( "number:month" );
1753 xmlWriter->addAttribute( "number:textual", "false" );
1754 xmlWriter->addAttribute( "number:style", "long" );
1755 xmlWriter->endElement();
1757 xmlWriter->startElement( "number:text");
1758 xmlWriter->addTextNode( "/" );
1759 xmlWriter->endElement();
1761 xmlWriter->startElement( "number:day" );
1762 xmlWriter->addAttribute( "number:style", "long" );
1763 xmlWriter->endElement();
1765 xmlWriter->startElement( "number:text");
1766 xmlWriter->addTextNode( "/" );
1767 xmlWriter->endElement();
1769 xmlWriter->startElement( "number:year" );
1770 xmlWriter->addAttribute( "number:style", "long" );
1771 xmlWriter->endElement();
1773 xmlWriter->endElement();
1775 else if( valueFormat.lower() == "yyyy/mm/dd" )
1777 xmlWriter->startElement( "number:date-style" );
1778 xmlWriter->addAttribute( "style:name", refName );
1779 xmlWriter->addAttribute( "style:family", "data-style" );
1781 xmlWriter->startElement( "number:year" );
1782 xmlWriter->addAttribute( "number:style", "long" );
1783 xmlWriter->endElement();
1785 xmlWriter->startElement( "number:text");
1786 xmlWriter->addTextNode( "/" );
1787 xmlWriter->endElement();
1789 xmlWriter->startElement( "number:month" );
1790 xmlWriter->addAttribute( "number:textual", "false" );
1791 xmlWriter->addAttribute( "number:style", "long" );
1792 xmlWriter->endElement();
1794 xmlWriter->startElement( "number:text");
1795 xmlWriter->addTextNode( "/" );
1796 xmlWriter->endElement();
1798 xmlWriter->startElement( "number:day" );
1799 xmlWriter->addAttribute( "number:style", "long" );
1800 xmlWriter->endElement();
1802 xmlWriter->endElement();
1804 else if( valueFormat.lower() == "yyyy/mm/d" )
1806 xmlWriter->startElement( "number:date-style" );
1807 xmlWriter->addAttribute( "style:name", refName );
1808 xmlWriter->addAttribute( "style:family", "data-style" );
1810 xmlWriter->startElement( "number:year" );
1811 xmlWriter->addAttribute( "number:style", "long" );
1812 xmlWriter->endElement();
1814 xmlWriter->startElement( "number:text");
1815 xmlWriter->addTextNode( "/" );
1816 xmlWriter->endElement();
1818 xmlWriter->startElement( "number:month" );
1819 xmlWriter->addAttribute( "number:textual", "false" );
1820 xmlWriter->addAttribute( "number:style", "long" );
1821 xmlWriter->endElement();
1823 xmlWriter->startElement( "number:text");
1824 xmlWriter->addTextNode( "/" );
1825 xmlWriter->endElement();
1827 xmlWriter->startElement( "number:day" );
1828 xmlWriter->addAttribute( "number:style", "short" );
1829 xmlWriter->endElement();
1831 xmlWriter->endElement();
1833 else if( (valueFormat.lower() == "yyyy-mm-dd") || (valueFormat.lower() == "yyyy\\-mm\\-dd") )
1835 xmlWriter->startElement( "number:date-style" );
1836 xmlWriter->addAttribute( "style:name", refName );
1837 xmlWriter->addAttribute( "style:family", "data-style" );
1839 xmlWriter->startElement( "number:year" );
1840 xmlWriter->addAttribute( "number:style", "long" );
1841 xmlWriter->endElement();
1843 xmlWriter->startElement( "number:text");
1844 xmlWriter->addTextNode( "-" );
1845 xmlWriter->endElement();
1847 xmlWriter->startElement( "number:month" );
1848 xmlWriter->addAttribute( "number:textual", "false" );
1849 xmlWriter->addAttribute( "number:style", "long" );
1850 xmlWriter->endElement();
1852 xmlWriter->startElement( "number:text");
1853 xmlWriter->addTextNode( "-" );
1854 xmlWriter->endElement();
1856 xmlWriter->startElement( "number:day" );
1857 xmlWriter->addAttribute( "number:style", "long" );
1858 xmlWriter->endElement();
1860 xmlWriter->endElement();
1862 else if( (valueFormat.lower() == "yyyy-mm-d") || (valueFormat.lower() == "yyyy\\-mm\\-d") )
1864 xmlWriter->startElement( "number:date-style" );
1865 xmlWriter->addAttribute( "style:name", refName );
1866 xmlWriter->addAttribute( "style:family", "data-style" );
1868 xmlWriter->startElement( "number:year" );
1869 xmlWriter->addAttribute( "number:style", "long" );
1870 xmlWriter->endElement();
1872 xmlWriter->startElement( "number:text");
1873 xmlWriter->addTextNode( "-" );
1874 xmlWriter->endElement();
1876 xmlWriter->startElement( "number:month" );
1877 xmlWriter->addAttribute( "number:textual", "false" );
1878 xmlWriter->addAttribute( "number:style", "long" );
1879 xmlWriter->endElement();
1881 xmlWriter->startElement( "number:text");
1882 xmlWriter->addTextNode( "-" );
1883 xmlWriter->endElement();
1885 xmlWriter->startElement( "number:day" );
1886 xmlWriter->addAttribute( "number:style", "short" );
1887 xmlWriter->endElement();
1889 xmlWriter->endElement();
1892 else if( valueFormat == "h:mm AM/PM" )
1894 xmlWriter->startElement( "number:time-style" );
1895 xmlWriter->addAttribute( "style:name", refName );
1896 xmlWriter->addAttribute( "style:family", "data-style" );
1898 xmlWriter->startElement( "number:hours" );
1899 xmlWriter->addAttribute( "number:style", "short" );
1900 xmlWriter->endElement();
1902 xmlWriter->startElement( "number:text");
1903 xmlWriter->addTextNode( ":" );
1904 xmlWriter->endElement();
1906 xmlWriter->startElement( "number:minutes" );
1907 xmlWriter->addAttribute( "number:style", "long" );
1908 xmlWriter->endElement();
1910 xmlWriter->startElement( "number:text");
1911 xmlWriter->addTextNode( " " );
1912 xmlWriter->endElement();
1914 xmlWriter->startElement( "number:am-pm" );
1915 xmlWriter->endElement();
1917 xmlWriter->endElement();
1919 else if( valueFormat == "h:mm:ss AM/PM" )
1921 xmlWriter->startElement( "number:time-style" );
1922 xmlWriter->addAttribute( "style:name", refName );
1923 xmlWriter->addAttribute( "style:family", "data-style" );
1925 xmlWriter->startElement( "number:hours" );
1926 xmlWriter->addAttribute( "number:style", "short" );
1927 xmlWriter->endElement();
1929 xmlWriter->startElement( "number:text");
1930 xmlWriter->addTextNode( ":" );
1931 xmlWriter->endElement();
1933 xmlWriter->startElement( "number:minutes" );
1934 xmlWriter->addAttribute( "number:style", "long" );
1935 xmlWriter->endElement();
1937 xmlWriter->startElement( "number:text");
1938 xmlWriter->addTextNode( ":" );
1939 xmlWriter->endElement();
1941 xmlWriter->startElement( "number:seconds" );
1942 xmlWriter->addAttribute( "number:style", "long" );
1943 xmlWriter->endElement();
1945 xmlWriter->startElement( "number:text");
1946 xmlWriter->addTextNode( " " );
1947 xmlWriter->endElement();
1949 xmlWriter->startElement( "number:am-pm" );
1950 xmlWriter->endElement();
1952 xmlWriter->endElement();
1954 else if( valueFormat == "h:mm" )
1956 xmlWriter->startElement( "number:time-style" );
1957 xmlWriter->addAttribute( "style:name", refName );
1958 xmlWriter->addAttribute( "style:family", "data-style" );
1960 xmlWriter->startElement( "number:hours" );
1961 xmlWriter->addAttribute( "number:style", "short" );
1962 xmlWriter->endElement();
1964 xmlWriter->startElement( "number:text");
1965 xmlWriter->addTextNode( ":" );
1966 xmlWriter->endElement();
1968 xmlWriter->startElement( "number:minutes" );
1969 xmlWriter->addAttribute( "number:style", "long" );
1970 xmlWriter->endElement();
1972 xmlWriter->endElement();
1974 else if( valueFormat == "h:mm:ss" )
1976 xmlWriter->startElement( "number:time-style" );
1977 xmlWriter->addAttribute( "style:name", refName );
1978 xmlWriter->addAttribute( "style:family", "data-style" );
1980 xmlWriter->startElement( "number:hours" );
1981 xmlWriter->addAttribute( "number:style", "short" );
1982 xmlWriter->endElement();
1984 xmlWriter->startElement( "number:text");
1985 xmlWriter->addTextNode( ":" );
1986 xmlWriter->endElement();
1988 xmlWriter->startElement( "number:minutes" );
1989 xmlWriter->addAttribute( "number:style", "long" );
1990 xmlWriter->endElement();
1992 xmlWriter->startElement( "number:text");
1993 xmlWriter->addTextNode( ":" );
1994 xmlWriter->endElement();
1996 xmlWriter->startElement( "number:seconds" );
1997 xmlWriter->addAttribute( "number:style", "long" );
1998 xmlWriter->endElement();
2000 xmlWriter->endElement();
2002 else if( valueFormat == "[h]:mm" )
2004 xmlWriter->startElement( "number:time-style" );
2005 xmlWriter->addAttribute( "style:name", refName );
2006 xmlWriter->addAttribute( "style:family", "data-style" );
2007 xmlWriter->addAttribute( "number:truncate-on-overflow", "false" );
2009 xmlWriter->startElement( "number:hours" );
2010 xmlWriter->addAttribute( "number:style", "short" );
2011 xmlWriter->endElement();
2013 xmlWriter->startElement( "number:text");
2014 xmlWriter->addTextNode( ":" );
2015 xmlWriter->endElement();
2017 xmlWriter->startElement( "number:minutes" );
2018 xmlWriter->addAttribute( "number:style", "long" );
2019 xmlWriter->endElement();
2021 xmlWriter->endElement();
2023 else if( valueFormat == "[h]:mm:ss" )
2025 xmlWriter->startElement( "number:time-style" );
2026 xmlWriter->addAttribute( "style:name", refName );
2027 xmlWriter->addAttribute( "style:family", "data-style" );
2028 xmlWriter->addAttribute( "number:truncate-on-overflow", "false" );
2030 xmlWriter->startElement( "number:hours" );
2031 xmlWriter->addAttribute( "number:style", "short" );
2032 xmlWriter->endElement();
2034 xmlWriter->startElement( "number:text");
2035 xmlWriter->addTextNode( ":" );
2036 xmlWriter->endElement();
2038 xmlWriter->startElement( "number:minutes" );
2039 xmlWriter->addAttribute( "number:style", "long" );
2040 xmlWriter->endElement();
2042 xmlWriter->startElement( "number:text");
2043 xmlWriter->addTextNode( ":" );
2044 xmlWriter->endElement();
2046 xmlWriter->startElement( "number:seconds" );
2047 xmlWriter->addAttribute( "number:style", "long" );
2048 xmlWriter->endElement();
2050 xmlWriter->endElement();
2052 else if( valueFormat == "mm:ss" )
2054 xmlWriter->startElement( "number:time-style" );
2055 xmlWriter->addAttribute( "style:name", refName );
2056 xmlWriter->addAttribute( "style:family", "data-style" );
2058 xmlWriter->startElement( "number:minutes" );
2059 xmlWriter->addAttribute( "number:style", "long" );
2060 xmlWriter->endElement();
2062 xmlWriter->startElement( "number:text");
2063 xmlWriter->addTextNode( ":" );
2064 xmlWriter->endElement();
2066 xmlWriter->startElement( "number:seconds" );
2067 xmlWriter->addAttribute( "number:style", "long" );
2068 xmlWriter->endElement();
2070 xmlWriter->endElement();
2072 else if( valueFormat == "mm:ss.0" )
2074 xmlWriter->startElement( "number:time-style" );
2075 xmlWriter->addAttribute( "style:name", refName );
2076 xmlWriter->addAttribute( "style:family", "data-style" );
2078 xmlWriter->startElement( "number:minutes" );
2079 xmlWriter->addAttribute( "number:style", "long" );
2080 xmlWriter->endElement();
2082 xmlWriter->startElement( "number:text");
2083 xmlWriter->addTextNode( ":" );
2084 xmlWriter->endElement();
2086 xmlWriter->startElement( "number:seconds" );
2087 xmlWriter->addAttribute( "number:style", "long" );
2089 xmlWriter->endElement();
2090 xmlWriter->startElement( "number:text");
2091 xmlWriter->addTextNode( ".0" );
2092 xmlWriter->endElement();
2095 xmlWriter->endElement();
2097 else if( valueFormat == "[mm]:ss" )
2099 xmlWriter->startElement( "number:time-style" );
2100 xmlWriter->addAttribute( "style:name", refName );
2101 xmlWriter->addAttribute( "style:family", "data-style" );
2102 xmlWriter->addAttribute( "number:truncate-on-overflow", "false" );
2104 xmlWriter->startElement( "number:minutes" );
2105 xmlWriter->addAttribute( "number:style", "long" );
2106 xmlWriter->endElement();
2108 xmlWriter->startElement( "number:text");
2109 xmlWriter->addTextNode( ":" );
2110 xmlWriter->endElement();
2112 xmlWriter->startElement( "number:seconds" );
2113 xmlWriter->addAttribute( "number:style", "long" );
2114 xmlWriter->endElement();
2116 xmlWriter->endElement();
2118 else if( valueFormat == "[ss]" )
2120 xmlWriter->startElement( "number:time-style" );
2121 xmlWriter->addAttribute( "style:name", refName );
2122 xmlWriter->addAttribute( "style:family", "data-style" );
2123 xmlWriter->addAttribute( "number:truncate-on-overflow", "false" );
2125 xmlWriter->startElement( "number:seconds" );
2126 xmlWriter->addAttribute( "number:style", "long" );
2127 xmlWriter->endElement();
2129 xmlWriter->endElement();
Provides color based on RGB values.
Provides a wrapper for cell value.
bool isInteger() const Returns true if the type of this value is integer.
bool isBoolean() const Returns true if the type of this value is Boolean.
double asFloat() const Returns the floating-point value of this value.
bool isFloat() const Returns true if the type of this value is floating-point.
UString asString() const Returns the string value of this value.
bool isString() const Returns true if the type of this value is string.
bool asBoolean() const Returns the boolean value of this value.
|