本文目录一览:
excelwriter写入到指定文件夹下
excelwriter写入到指定文件夹下,指定保存excel文件的路径 我的XlsxWriter脚本位于文件/app/smth1/smth2/中,出于某种原因,它将excel文件保存到了/app/。
Qt操作Excel
如果设置后台启动报错的话,那提供一种无奈之选,就是,设置窗口可见,然后
excel-setProperty("WindowState", "xlMinimized");
将窗口最小化,将就一下
关于qt与excel
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
if(!db.isValid())
{
qDebug() "export2Excel failed: QODBC not supported.";
return ;
}
QString xlsFile = "D:/test.xls";
QString dsn = QString("DRIVER={Microsoft Excel Driver (*.xls)};Readonly=0;DriverId=790;DBQ=%1").arg(xlsFile);-qt快速写excel文件路径
db.setDatabaseName(dsn);
if(!db.open())
{
//错误处理
return;
}
QString queryystr = "select * from [sheet1$]";
SqlTableModel*excelTableModel = new SqlTableModel(this, db);
QString tableName = "[sheet1$]";
excelTableModel-setTable(tableName);
QSqlQuery querry(queryystr, db);
excelTableModel-setQuery(querry);
excelTableModel-setEditStrategy(QSqlTableModel::OnManualSubmit);
excelTableModel-setSort(0, Qt::AscendingOrder);
bool ok = excelTableModel-select(); //选取整个表的所有行
ui.tableView_2-setModel(excelTableModel);
int i = 0;
foreach(QString heardName, heardList)
{
excelTableModel-setHeaderData(i, Qt::Horizontal, heardName);
i++;
}
int sqlTableCount = m_sqlTableModel-rowCount();
int excelTableCount = excelTableModel-rowCount();
QListQSqlRecord tmprecord;
for (int row = 0; row excelTableCount; row++ )
{
QSqlRecord excelRecord = excelTableModel-record(row);
tmprecord excelRecord;
}
db.close();
bool open = m_dba.open();
foreach(QSqlRecord record, tmprecord)
{
bool ok = m_sqlTableModel-insertRow(sqlTableCount); //添加一行
for (int k = 0; k5;k++)
{
if (k == 0)
{
bool suc= m_sqlTableModel-setData(m_sqlTableModel-index(sqlTableCount,k),record.value(k), Qt::CheckStateRole);-qt快速写excel文件路径
}
bool suc= m_sqlTableModel-setData(m_sqlTableModel-index(sqlTableCount,k),record.value(k), Qt::EditRole);-qt快速写excel文件路径
}
sqlTableCount++;
}
AlterButtonClicked();
initWindow(TEACHERMANAGECLICKED);
AlterButtonClicked()
{
m_sqlTableModel-database().transaction(); //开始事务操作
if (m_sqlTableModel-submitAll())
{
m_sqlTableModel-database().commit(); //提交
}
else
{
m_sqlTableModel-database().rollback(); //回滚
QMessageBox::warning(this, tr("Model"), tr("数据库错误: %1").arg(m_sqlTableModel-lastError().text()));
}
}
initWindow(int index)
{
int i = 0;
heardList.clear();
if (index == STUDENTMANAGECLICKED)
{
heardList "选择" "编号" "姓名" "性别" "班级" "备注";
m_sqlTableModel-setTable("\"StudentInfo\"");
m_sqlTableModel-setEditStrategy(QSqlTableModel::OnManualSubmit);
m_sqlTableModel-setSort(0, Qt::AscendingOrder);
m_sqlTableModel-select(); //选取整个表的所有行
ui.tableView_2-setModel(m_sqlTableModel);
foreach(QString heardName, heardList)
{
m_sqlTableModel-setHeaderData(i, Qt::Horizontal, heardName);
i++;
}
}
else if (index == TEACHERMANAGECLICKED)
{
heardList "选择" "用户名" "姓名" "性别" "角色" "备注";
m_sqlTableModel-setTable("\"TeacherInfo\"");
m_sqlTableModel-setEditStrategy(QSqlTableModel::OnManualSubmit);
m_sqlTableModel-setSort(0, Qt::AscendingOrder);
bool ok1 = m_sqlTableModel-select(); //选取整个表的所有行
ui.tableView_2-setModel(m_sqlTableModel);
foreach(QString heardName, heardList)
{
m_sqlTableModel-setHeaderData(i, Qt::Horizontal, heardName);
i++;
}
}
//m_sqlTableModel-insertColumn(0);
ui.tableView_2-resizeColumnsToContents();
}
4.2 UiPathExcel之写入操作
Excel 写操作
写一个单元格
控件介绍
Write Cell: 使用Write Cell控件,在指定单元格写入内容
常用属性介绍:
Destination:
Cell: 要写入的单元格。如果在指定坐标处已经存在一个值,则会将其覆盖
SheetName: 需要写入的工作簿名称
Input:
Text: 要写入单元格或范围的值或公式
WorkbookPath: 需要写入的Excel文件路径
Misc:
Private: 如果选中,则变量和参数的值不再记录在详细级别
Options:
Password: Excel 文件密码(如无可忽略)
案例说明
给定Excel 文件“writeExample.xlsx“,在”B1”单元格,写入内容”Hello UiPath”,在”B2”单元格键入公式”=B1” Hello World””
操作步骤
写一行
控件介绍
Write Range: 使用Write Range控件,在指定范围单元格写入内容
常用属性介绍:
Input:
SheetName: 需要写入的工作簿名称
StartingCell: 从指定单元格开始写入数据
Input:
DataTable: 要写入单指定范围的数据
Misc:
Private: 如果选中,则变量和参数的值不再记录在详细级别
Options:
AddHeaders: 如果选中,列标题也将写入指定表格的范围
案例说明
给定Excel文件”Employees300.xlsx”,使用Read Write控件读取A2行的数据,并写入到文件”writeExample.xlsx”中
操作步骤
第一步:使用Read Range控件,输入Excel文件路径,读取A2到E2范围的数据,保存到变量rowDT中
写一列
控件介绍
Write Range: 使用Write Range控件,在指定范围单元格写入内容
案例说明
给定Excel文件”Employees300.xlsx”,使用Read Write控件读取A列的数据,并写入到文件”writeExample.xlsx”中
操作步骤
第一步:使用Read Range控件,输入Excel文件路径,读取A1到A320范围的数据,保存到变量columnDT
写多行多列
控件介绍
Write Range: 使用Write Range控件,在指定范围单元格写入内容
案例说明
给定Excel 文件“Employees300.xlsx“,读取从单元格”A2”到”E7”范围的数据,并将数据写入到“ writeExample.xlsx “文件的由”A2”开始的单元格中
操作步骤
UiPath技术交流群:
「465630324」
qtactivex操作excel,该怎么解决
Excel读取
为了便于测试,假设已存在一个excel文件,操作内容已经被红色标记出来。如下所示:
主要读取内容:
标题
工作表数目
工作表名称
起始行
起始列
行数
列数
单元格内容
代码如下:
QAxObject excel("Excel.Application");
excel.setProperty("Visible", true);
QAxObject *work_books = excel.querySubObject("WorkBooks");
work_books-dynamicCall("Open (const QString)", QString("E:/test.xlsx"));
QVariant title_value = excel.property("Caption"); //获取标题
qDebug()QString("excel title : ")title_value;
QAxObject *work_book = excel.querySubObject("ActiveWorkBook");
QAxObject *work_sheets = work_book-querySubObject("Sheets"); //Sheets也可换用WorkSheets
int sheet_count = work_sheets-property("Count").toInt(); //获取工作表数目
qDebug()QString("sheet count : ")sheet_count;
for(int i=1; i=sheet_count; i++)
{
QAxObject *work_sheet = work_book-querySubObject("Sheets(int)", i); //Sheets(int)也可换用Worksheets(int)-qt快速写excel文件路径
QString work_sheet_name = work_sheet-property("Name").toString(); //获取工作表名称
QString message = QString("sheet ")+QString::number(i, 10)+ QString(" name");
qDebug()messagework_sheet_name;
}
if(sheet_count 0)
{
QAxObject *work_sheet = work_book-querySubObject("Sheets(int)", 1);
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(); //获取列数
for(int i=row_start; i
{
for(int j=column_start; j
{
QAxObject *cell = work_sheet-querySubObject("Cells(int,int)", i, j);
QVariant cell_value = cell-property("Value"); //获取单元格内容
QString message = QString("row-")+QString::number(i, 10)+QString("-column-")+QString::number(j, 10)+QString(":");-qt快速写excel文件路径
qDebug()messagecell_value;