效果图:
QT += core gui axcontainer
CONFIG += qaxcontainer
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = fastReadExcelInWindows
TEMPLATE = app
SOURCES += main.cpp\
MainWindow.cpp \
ExcelBase.cpp \
QVariantListListModel.cpp
HEADERS += MainWindow.h \
QVariantListListModel.h \
ExcelBase.h
FORMS += MainWindow.ui
//读取
void MainWindow::getContents(QTableView **view , QStandardItemModel **model, int sheet_num, QString sheet_name)
{
QAxObject *work_sheet = work_book->querySubObject("Sheets(int)", sheet_num);
QAxObject *used_range = work_sheet->querySubObject("UsedRange");
QAxObject *rows = used_range->querySubObject("Rows");
QAxObject *columns = used_range->querySubObject("Columns");
int row_start = used_range->property("Row").toInt(); //获取起始行
int column_start = used_range->property("Column").toInt(); //获取起始列
int row_count = rows->property("Count").toInt(); //获取行数
int column_count = columns->property("Count").toInt(); //获取列数
(*model) = new QStandardItemModel(row_count-1, column_count);
for(int i=row_start; i<=row_count; ++i)
{
for(int j=column_start; j<=column_count; ++j)
{
QAxObject *cell = work_sheet->querySubObject("Cells(int,int)", i, j);
//QVariant cell_value = cell->property("Value"); //获取单元格内容
QString cell_value = cell->property("Value2").toString(); //获取单元格内容
if( i == 1 )
(*model)->setHeaderData(j-1, Qt::Horizontal, cell_value);//将表的列名,放入model的列名中
else
(*model)->setData((*model)->index(i-2, j-1, QModelIndex()), cell_value);
}
}
(*view) = new QTableView;
(*view)->verticalHeader()->setVisible(false);