How to get last SysExcelWorksheet object row or column[X++]
findLastColumn
int findLastColumn(SysExcelWorksheet _sysExcelWorksheet, boolean _data = true)
{
#Excel
#define.Star('*')
SysExcelRange sysExcelRange;
int ret;
;
sysExcelRange = _data ?
_sysExcelWorksheet.cells().range(#ExcelDataRange) :
_sysExcelWorksheet.cells().range(#ExcelTotalRange);
try
{
sysExcelRange = sysExcelRange.find(#Star, null, #xlFormulas, #xlWhole, #xlByColumns, #xlPrevious);
}
catch (Exception::Error)
{
error("@SYS59926");
}
if (sysExcelRange)
ret = sysExcelRange.column(); return ret;
}
findLastRow
int findLastRow(SysExcelWorksheet _sysExcelWorksheet)
{
#Excel
#define.Star('*')
#define.ExcelDataRange("A1:IV65536")
SysExcelRange sysExcelRange = _sysExcelWorksheet.cells().range(#ExcelDataRange);
int ret;
;
try
{
sysExcelRange = sysExcelRange.find(#Star, null, #xlFormulas, #xlWhole, #xlByRows, #xlPrevious);
}
catch (Exception::Error)
{
error("@SYS59926");
}
if (sysExcelRange)
ret = sysExcelRange.row(); return ret;
}
come on, look at an example
void THK_7519_readExcelFile()
{
#AviFiles
#WinAPI
SysExcelApplication application = SysExcelApplication::construct();
SysExcelWorkbooks workbooks = application.workbooks();
SysExcelWorkbook workbook;
SysExcelWorksheets worksheets;
SysExcelWorksheet worksheet;
SysExcelCells cells; COMVariantType type;
SysOperationProgress progressBar;
Test newTest; FileNameFilter filter = ['All files','*.xls;*.xlsx'];
str code, address, precent;
Filename fileName;
int records,row = 1;
;
filename = Winapi::getOpenFileName(0, filter, WinAPI::getFolderPath(#CSIDL_Personal), "Select file for upload", '','');
if (!winAPI::fileExists(filename,false))
return;
if (!Box::yesNo(strfmt("Upload this file %1", filename), dialogButton::No))
return; try
{
workbooks.open(fileName);
workbook = workbooks.item(1);
worksheets = workbook.worksheets();
worksheet = worksheets.itemFromNum(1);
cells = worksheet.cells();
records = this.findLastRow(worksheet);// 2190;
progressBar = SysOperationProgress::newGeneral(#AviUpdate, "import data", records);
progressBar.setTextLength(80);
setPrefix(filename); ttsBegin;
delete_from newTest;
do
{
row++;
setPrefix(strFmt("Row %1", row));
Code = strLRTrim(cells.item(row, 1).value().bStr());
address = strLRTrim(cells.item(row, 2).value().bStr()); newTest.clear();
newTest.initValue();
newTest.AccountNum = Code;
newTest.Name01 = address;
newTest.LineNum = row;
if (!newTest.validateWrite())
throw Exception::Error;
newTest.insert();
progressBar.incCount(1);
progressBar.setText(strfmt("Line: %1 - %2[%3 %4]", newTest.LineNum, newTest.AccountNum, newTest.Name01, newTest.Name02));
progressBar.setCaption(strFmt("Process %1%", row / records * 100));
progressBar.update(true);
type = cells.item(row + 1, 1).value().variantType();
}
while (type != COMVariantType::VT_EMPTY); ttsCommit;
}
catch (Exception::Error)
{
application.quit();
} application.quit();
progressBar.finalize();
progressBar = null;
Test_ds.executeQuery();
info( strfmt("total read %1 records", int2str(row)) );
}
How to get last SysExcelWorksheet object row or column[X++]的更多相关文章
- Flutter 布局(七)- Row、Column详解
本文主要介绍Flutter布局中的Row.Column控件,详细介绍了其布局行为以及使用场景,并对源码进行了分析. 1. Row A widget that displays its children ...
- Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column is set to 0.
1: /// <summary> 2: /// Write an algorithm such that if an element in an MxN matrix is 0, it ...
- excel小技巧-用于测试用例的编号栏:“获取当前单元格的上一格的值+1”=INDIRECT(ADDRESS(ROW()-1,COLUMN()))+1
编写用例的时候使用,经常修改用例的时候会需要增加.删除.修改条目,如果用下拉更新数值的方式会很麻烦. 1.使用ctrl下拉,增删移动用例的时候,需要每次都去拉,万一列表比较长,会很麻烦 2.使用ROW ...
- params.row[params.column.key] vue h函数 当前单元格 h函数 div 属性 值或数组 render
params.row[params.column.key] vue h函数 当前单元格 h函数 div 属性 值或数组 render
- LeetCode 947. Most Stones Removed with Same Row or Column
原题链接在这里:https://leetcode.com/problems/most-stones-removed-with-same-row-or-column/ 题目: On a 2D plane ...
- Flutter 布局类组件:线性布局(Row和Column)
前言 所谓线性布局,即指沿水平或垂直方向排布子组件.Flutter中通过Row和Column来实现线性布局,并且它们都继承自弹性布局(Flex). 接口描述 Row({ Key key, // 表示子 ...
- 12.Quick QML-QML 布局(Row、Column、Grid、Flow和嵌套布局) 、Repeater对象
1.Row布局 Row中的item可以不需要使用anchors布局,就能通过行的形式进行布局. 并且item可以使用Positioner附加属性来访问有关其在Row中的位置及其他信息. 示例如下所示, ...
- 陈年佳酿之 - Winform ListView 控件 double click 事件中获取选中的row与column
背景 最近收到了一个关于以前项目的维护请求,那时的楼主还是刚刚工作的小青年~~~ 项目之前使用的是.net/winform.今天重新打开代码,看着之前在FrameWork2.0下面的代码, 满满的回忆 ...
- 【leetcode】947. Most Stones Removed with Same Row or Column
题目如下: On a 2D plane, we place stones at some integer coordinate points. Each coordinate point may h ...
随机推荐
- Apache账户密码加密方式介绍
一.apache密码存储格式 apache的用户密码一般会生成保存在.htpasswd文件中,保存路径由用户创建时确定,根据使用加密算法有五种保存格式: [注]:如果用户指定了保存密码的文件名,视用户 ...
- java的string方法使用
1.将list转换为","隔开的字符串 //videoIdList值转换成 1,2,3 String videoIds = StringUtils.join(videoIdList ...
- Oracle 数据库创建表空间、创建用户
创建表空间 create temporary tablespace user_name_temp tempfile '/oradata/ORA11G/user_name_temp.dbf' size ...
- shell-字符串多操作符综合实践多案例
1. 字符串测试举例 提示:下面的$file并未定义,而$file1 在上面测试中已定义. 范例1:单条件字符串测试: [root@test-1 ~]# file1=/etc/services ...
- 将本地代码初始化上传到gitlab仓库
首先你已经安装了git. 1.在本地代码目录,鼠标右键Git Bash Here: 2.执行git命令,此命令会在当前目录下创建一个.git文件夹, git init 3.将项目的所有文件添加到仓库中 ...
- Oracle体系结构概述与SQL解析剖析
Oracle服务器 是一个数据库管理系统,它提供了一种全面.开放.集成的方法来管理信息. Oracle服务器由Oracle数据库和Oracle实例组成. oracle数据库软件和Oracle数据库软件 ...
- 多测试_常用linux命令_002
linux 介绍 常用的操作系统(os): windows .dos.android.ios.unix.linux linux系统:是一个免费.开源的操作系统 支持多cpu,多用户,多线程的操作系统, ...
- python程序整理(2)
# 写一个函数完成三次登陆功能: # 用户的用户名密码从一个文件register中取出. # register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行. # 完 ...
- Warning: Permanently added the RSA host key for IP address '52.74.223.119' to the list of known hosts.
如果出现这个问题,说明你的github缺少公钥 使用 ssh -T git@gtihub.com 去测试 1.生成密钥 ssh-keygen -t rsa -C "your name&quo ...
- selenium分布式启动(deepin)
1.deepin安装jdk: 下载地址:链接:https://pan.baidu.com/s/19-pU8G6RzMW92uBCxBH7sA 密码:1c7n 解压:tar -zxvf jdk-8u20 ...