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 ...
随机推荐
- ECMASctipt6总结
1.let 变量声明以及特性 声明变量 let a; let b, c, d; let e = 1; let f = 2, g = 3; 特性 1.不能重复声明 2.块级作用域 只在块级作用域有效 ...
- 用C写一个简单的推箱子游戏(一)
我现在在读大二,我们有一门课程叫<操作系统>,课程考查要求我们可以写一段程序或者写Windows.iOS.Mac的发展历程.后面我结合网上的资料参考,就想用自己之前简单学过的C写一关的推箱 ...
- 最新最最最简单的Axure傻瓜式破解版教程(带下载地址)
Axure 破解版下载 下载地址在文章末尾 Axure是什么? Axure RP是一款专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prot ...
- docker容器命令1
docker容器命令 新建并启动容器命令 docker run INAME(镜像名字) 语法:docker run [OPTIONS] INAME [COMMAND] 例子:docker run -i ...
- 机器学习 KNN算法原理
K近邻(K-nearst neighbors,KNN)是一种基本的机器学习算法,所谓k近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表.比如:判断一个人的人品,只需要观察 ...
- 关于pipeline的一篇转载博文https://www.cnblogs.com/midhillzhou/p/5588958.html
引用自https://www.cnblogs.com/midhillzhou/p/5588958.html 1.pipeline的产生 从一个现象说起,有一家咖啡吧生意特别好,每天来的客人络绎不绝,客 ...
- linux(centos8):安装kubernetes worker节点并加入到kubernetes集群(kubernetes 1.18.3)
一,安装kubernetes前的准备工作 安装前的准备工作(master\worker都要进行) 参见: https://www.cnblogs.com/architectfore ...
- VitualBox CentOS增强功能的安装使用 - Linux操作系统
本人因为电脑配置原因,安装的是CentOS 6.6 minimal版本,虚拟环境为VirtualBox 4.3.18. 当我使用的时候,想从本机(WindowXP)电脑将文件共享到虚拟(Cen ...
- php+nginx 整合
php编译 https://www.cnblogs.com/php-linux/p/12360858.html nginx编译 https://www.cnblogs.com/php-linux/p/ ...
- Tomcat6.0 支持 https
环境信息 Linux系统 + Tomcat (程序页面可以运行前提下) 条件:安装了JDK 查看指定版本信息 1 进入$JAVA_HOME/bin目录 (一般是这个目录 /usr/java ...