organize and update samples

This commit is contained in:
Thomas Fussell 2015-10-14 00:41:04 -04:00
parent 6b3781d03b
commit 4d1e5024b1
5 changed files with 81 additions and 46 deletions

View File

@ -1,37 +0,0 @@
#include <iostream>
#include <xlnt/xlnt.hpp>
int main()
{
for(auto sheet : xlnt::reader::load_workbook("book.xlsx"))
{
std::cout << sheet.get_title() << ": " << std::endl;
for(auto row : sheet.rows())
{
for(auto cell : row)
{
std::cout << cell.get_value().as<std::string>() << ", ";
}
std::cout << std::endl;
}
}
xlnt::workbook workbook;
for(int i = 0; i < 3; i++)
{
auto sheet = workbook.create_sheet("Sheet" + std::to_string(i));
for(int row = 0; row < 100; row++)
{
for(int column = 0; column < 100; column++)
{
sheet[xlnt::cell_reference(column, row)].set_value(row * 100 + column);
}
}
}
workbook.save("book2.xlsx");
}

37
samples/sample1.cpp Normal file
View File

@ -0,0 +1,37 @@
#include <iostream>
#include <xlnt/xlnt.hpp>
/// <summary>
/// Read sample1.xlsx and print out a 2-dimensional
/// representation of each sheet. Cells are separated by commas.
/// Each new line is a new row.
/// </summary>
int main()
{
// Create a new workbook by reading sample1.xlsx in the current directory.
auto wb = xlnt::reader::load_workbook("sample1.xlsx");
// The workbook class has begin and end methods so it can be iterated upon.
// Each item is a sheet in the workbook.
for(auto sheet : wb)
{
// Print the title of the sheet on its own line.
std::cout << sheet.get_title() << ": " << std::endl;
// Iterating on a range, such as from worksheet::rows, yields cell_vectors.
// Cell vectors don't actually contain cells to reduce overhead.
// Instead they hold a reference to a worksheet and the current cell_reference.
// Internally, calling worksheet::get_cell with the current cell_reference yields the next cell.
// This allows easy and fast iteration over a row (sometimes a column) in the worksheet.
for(auto row : sheet.rows())
{
for(auto cell : row)
{
// cell::operator<< adds a string represenation of the cell's value to the stream.
std::cout << cell << ", ";
}
std::cout << std::endl;
}
}
}

BIN
samples/sample1.xlsx Normal file

Binary file not shown.

44
samples/sample2.cpp Normal file
View File

@ -0,0 +1,44 @@
#include <iostream>
#include <xlnt/xlnt.hpp>
/// <summary>
/// Make 3 sheets containing 10,000 cells with unique numeric values.
/// </summary>
int main()
{
// create the workbook
xlnt::workbook workbook;
// workbooks have a single sheet called "Sheet" initially so let's get rid of it
workbook.clear();
for(int i = 0; i < 3; i++)
{
// the title will be "Sample2-1", "Sample2-2", or "Sample2-3"
// if we don't specify a title, these would be "Sheet#" where
// # is the lowest number that doesn't have a corresponding sheet yet.
auto sheet = workbook.create_sheet("Sample2-" + std::to_string(i));
for(int row = 1; row < 101; row++)
{
for(int column = 1; column < 101; column++)
{
// Since we can't overload subscript to accept both number,
// create a cell_reference which "points" to the current cell.
xlnt::cell_reference ref(column, row);
// This is important!
// The cell class is really just a wrapper around a pointer.
// For this reason, we can store them by value and still modify
// the data in the containing worksheet.
auto cell = sheet[ref];
// set_value has overloads for many types such as strings and ints
cell.set_value(row * 100 + column);
}
}
}
// This will be written to the current directory.
workbook.save("sample2.xlsx");
}

View File

@ -1,9 +0,0 @@
import sys
def format(args):
print()
for line in sys.stdin.readlines():
print('"' + line.rstrip().replace('"', '\\"') + '"')
if __name__ == '__main__':
format(sys.argv)