Добрый день. У меня такая проблемка. Стоит задача создать програмку, которая бы открывала файлы xlsx и выводила бы таблицы в виде дерева, через TreeWidget или View. В Qt я еще зелен и глуп, но задачу поставили и нужно её правдами и неправдами выполнить. Прошу помощь сообщества.
Вычитку xlsx файла я смог реализовать с помощью библиотек Qt xlsx. Но, вот как потом вытянуть считанные данные, и реализовать их вывод в дереве я уже бьюсь почти месяц. Сказывается критическая нехватка опыта, потому как это моя первая программа. Предполагаю что нужно полученные данные впихнуть в QTreeModel и потом уже вывести на экран. Но не представляю как это реализовать. Брал стандартные примеры, но так и не смог их туда пристыковать. В целом, буду крайне признателен за любой совет (кроме: "читай документацию, там всё ясно", ведь в моем случае совсем не ясно), хотя желательно выложенный в стиле для туго доходящих)
Вот пример кода, которым я вычитываю xlsx:
Document doc(fileName);
int sheetIndexNumber = 0;
foreach( QString curretnSheetName, doc.sheetNames() )
{
// get current sheet
AbstractSheet* currentSheet = doc.sheet( curretnSheetName );
if ( NULL == currentSheet )
continue;
// get full cells of current sheet
int maxRow = -1;
int maxCol = -1;
currentSheet->workbook()->setActiveSheet( sheetIndexNumber );
Worksheet* wsheet = (Worksheet*) currentSheet->workbook()->activeSheet();
if ( NULL == wsheet )
continue;
QString strSheetName = wsheet->sheetName(); // sheet name
qDebug() << strSheetName;
QVector<CellLocation> clList = wsheet->getFullCells( &maxRow, &maxCol );
QVector< QVector<QString> > cellValues;
for (int rc = 0; rc < maxRow; rc++)
{
QVector<QString> tempValue;
for (int cc = 0; cc < maxCol; cc++)
{
tempValue.push_back(QString(""));
}
cellValues.push_back(tempValue);
}
for ( int ic = 0; ic < clList.size(); ++ic )
{
CellLocation cl = clList.at(ic); // cell location
int row = cl.row - 1;
int col = cl.col - 1;
QSharedPointer<Cell> ptrCell = cl.cell; // cell pointer
// value of cell
QVariant var = cl.cell.data()->value();
QString str = var.toString();
cellValues[row][col] = str;
for (int rc = 0; rc < maxRow; rc++)
{
for (int cc = 0; cc < maxCol; cc++)
{
QString strCell = cellValues[rc][cc];
qDebug() << "( row : " << rc
<< ", col : " << cc
<< ") " << strCell; // display cell value
}
}