mirror of
https://github.com/troldal/OpenXLSX.git
synced 2025-05-09 18:31:28 +08:00
66 lines
2.8 KiB
C++
66 lines
2.8 KiB
C++
|
|
#include <OpenXLSX.hpp>
|
|
#include <iostream>
|
|
|
|
using namespace std;
|
|
using namespace OpenXLSX;
|
|
|
|
int main()
|
|
{
|
|
cout << "********************************************************************************\n";
|
|
cout << "DEMO PROGRAM #02: Formulas\n";
|
|
cout << "********************************************************************************\n";
|
|
|
|
XLDocument doc;
|
|
doc.create("./Demo02.xlsx", XLForceOverwrite);
|
|
auto wks = doc.workbook().worksheet("Sheet1");
|
|
|
|
// Similar cell values, which are represented by XLCellValue objects, formulas are represented
|
|
// by XLFormula objects. They can be accessed through the XLCell interface using the .formula()
|
|
// member function. It should be noted, however, that the functionality of XLFormula is somewhat
|
|
// limited. Excel often uses 'shared' formulas, where the same formula is applied to several
|
|
// cells. XLFormula cannot handle shared formulas. Also, it cannot handle array formulas. This,
|
|
// in effect, means that XLFormula is not very useful for reading formulas from existing spread-
|
|
// sheets, but should rather be used to add or overwrite formulas to spreadsheets.
|
|
|
|
wks.cell("A1").value() = "Number:";
|
|
wks.cell("B1").value() = 1;
|
|
wks.cell("C1").value() = 2;
|
|
wks.cell("D1").value() = 3;
|
|
|
|
// Formulas can be added to a cell using the .formula() method on an XLCell object. The formula can
|
|
// be added by creating a separate XLFormula object, or (as shown below) by assigning a string
|
|
// holding the formula;
|
|
// Nota that OpenXLSX does not calculate the results of a formula. If you add a formula
|
|
// to a spreadsheet using OpenXLSX, you have to open the spreadsheet in the Excel application
|
|
// in order to see the results of the calculation.
|
|
wks.cell("A2").value() = "Calculation:";
|
|
wks.cell("B2").formula() = "SQRT(B1)";
|
|
wks.cell("C2").formula() = "EXP(C1)";
|
|
wks.cell("D2").formula() = "LN(D1)";
|
|
|
|
// The XLFormula object can be retrieved using the .formula() member function.
|
|
// The XLFormula .get() method can be used to get the formula string.
|
|
XLFormula B2 = wks.cell("B2").formula();
|
|
XLFormula C2 = wks.cell("C2").formula();
|
|
XLFormula D2 = wks.cell("D2").formula();
|
|
|
|
cout << "Formula in B2: " << B2.get() << endl;
|
|
cout << "Formula in C2: " << C2.get() << endl;
|
|
cout << "Formula in D2: " << D2.get() << endl << endl;
|
|
|
|
// Alternatively, the XLFormula object can be implicitly converted to a string object.
|
|
std::string B2string = wks.cell("B2").formula();
|
|
std::string C2string = wks.cell("C2").formula();
|
|
std::string D2string = wks.cell("D2").formula();
|
|
|
|
cout << "Formula in B2: " << B2string << endl;
|
|
cout << "Formula in C2: " << C2string << endl;
|
|
cout << "Formula in D2: " << D2string << endl << endl;
|
|
|
|
doc.save();
|
|
doc.close();
|
|
|
|
return 0;
|
|
}
|