| 448 | } |
| 449 | |
| 450 | void Workbook::saveToXmlFile(QIODevice *device) const |
| 451 | { |
| 452 | Q_D(const Workbook); |
| 453 | d->relationships->clear(); |
| 454 | if (d->sheets.isEmpty()) |
| 455 | const_cast<Workbook *>(this)->addSheet(); |
| 456 | |
| 457 | QXmlStreamWriter writer(device); |
| 458 | |
| 459 | writer.writeStartDocument(QStringLiteral("1.0"), true); |
| 460 | writer.writeStartElement(QStringLiteral("workbook")); |
| 461 | writer.writeAttribute(QStringLiteral("xmlns"), QStringLiteral("http://schemas.openxmlformats.org/spreadsheetml/2006/main")); |
| 462 | writer.writeAttribute(QStringLiteral("xmlns:r"), QStringLiteral("http://schemas.openxmlformats.org/officeDocument/2006/relationships")); |
| 463 | |
| 464 | writer.writeEmptyElement(QStringLiteral("fileVersion")); |
| 465 | writer.writeAttribute(QStringLiteral("appName"), QStringLiteral("xl")); |
| 466 | writer.writeAttribute(QStringLiteral("lastEdited"), QStringLiteral("4")); |
| 467 | writer.writeAttribute(QStringLiteral("lowestEdited"), QStringLiteral("4")); |
| 468 | writer.writeAttribute(QStringLiteral("rupBuild"), QStringLiteral("4505")); |
| 469 | // writer.writeAttribute(QStringLiteral("codeName"), QStringLiteral("{37E998C4-C9E5-D4B9-71C8-EB1FF731991C}")); |
| 470 | |
| 471 | writer.writeEmptyElement(QStringLiteral("workbookPr")); |
| 472 | if (d->date1904) |
| 473 | writer.writeAttribute(QStringLiteral("date1904"), QStringLiteral("1")); |
| 474 | writer.writeAttribute(QStringLiteral("defaultThemeVersion"), QStringLiteral("124226")); |
| 475 | |
| 476 | writer.writeStartElement(QStringLiteral("bookViews")); |
| 477 | writer.writeEmptyElement(QStringLiteral("workbookView")); |
| 478 | writer.writeAttribute(QStringLiteral("xWindow"), QString::number(d->x_window)); |
| 479 | writer.writeAttribute(QStringLiteral("yWindow"), QString::number(d->y_window)); |
| 480 | writer.writeAttribute(QStringLiteral("windowWidth"), QString::number(d->window_width)); |
| 481 | writer.writeAttribute(QStringLiteral("windowHeight"), QString::number(d->window_height)); |
| 482 | //Store the firstSheet when it isn't the default |
| 483 | //For example, when "the first sheet 0 is hidden", the first sheet will be 1 |
| 484 | if (d->firstsheet > 0) |
| 485 | writer.writeAttribute(QStringLiteral("firstSheet"), QString::number(d->firstsheet + 1)); |
| 486 | //Store the activeTab when it isn't the first sheet |
| 487 | if (d->activesheetIndex > 0) |
| 488 | writer.writeAttribute(QStringLiteral("activeTab"), QString::number(d->activesheetIndex)); |
| 489 | writer.writeEndElement();//bookViews |
| 490 | |
| 491 | writer.writeStartElement(QStringLiteral("sheets")); |
| 492 | int worksheetIndex = 0; |
| 493 | int chartsheetIndex = 0; |
| 494 | for (int i=0; i<d->sheets.size(); ++i) { |
| 495 | QSharedPointer<AbstractSheet> sheet = d->sheets[i]; |
| 496 | writer.writeEmptyElement(QStringLiteral("sheet")); |
| 497 | writer.writeAttribute(QStringLiteral("name"), sheet->sheetName()); |
| 498 | writer.writeAttribute(QStringLiteral("sheetId"), QString::number(sheet->sheetId())); |
| 499 | if (sheet->sheetState() == AbstractSheet::SS_Hidden) |
| 500 | writer.writeAttribute(QStringLiteral("state"), QStringLiteral("hidden")); |
| 501 | else if (sheet->sheetState() == AbstractSheet::SS_VeryHidden) |
| 502 | writer.writeAttribute(QStringLiteral("state"), QStringLiteral("veryHidden")); |
| 503 | |
| 504 | if (sheet->sheetType() == AbstractSheet::ST_WorkSheet) |
| 505 | d->relationships->addDocumentRelationship(QStringLiteral("/worksheet"), QStringLiteral("worksheets/sheet%1.xml").arg(++worksheetIndex)); |
| 506 | else |
| 507 | d->relationships->addDocumentRelationship(QStringLiteral("/chartsheet"), QStringLiteral("chartsheets/sheet%1.xml").arg(++chartsheetIndex)); |
nothing calls this directly
no test coverage detected