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 ...
随机推荐
- sqlserver和oracle修改表结构
sqlserver和oracle修改表结构常用SQL Server:1.增加列 ALTER TABLE users ADD address varchar(30);2.删除列 ALTER TABL ...
- Nuget管理自己的项目库
Nuget是什么 Nuget 是一种 Visual Studio 扩展工具,它能够简化在 Visual Studio 项目中添加.更新和删除库(部署为程序包)的操作.(官方地址)相信大家对这个应该还是 ...
- 洛谷P1450 [HAOI2008]硬币购物 背包+容斥
无限背包+容斥? 观察数据范围,可重背包无法通过,假设没有数量限制,利用用无限背包 进行预处理,因为实际硬币数有限,考虑减掉多加的部分 如何减?利用容斥原理,减掉不符合第一枚硬币数的,第二枚,依次类推 ...
- MySQL常用操作列表
DROP DATABASE IF EXISTS flaskweb; CREATE DATABASE flaskweb; USE flaskweb; GRANT ALL PRIVILEGES ON fl ...
- 数据结构&算法的引言&时间复杂度
什么是计算机科学? 首先明确的一点就是计算机科学不仅仅是对计算机的研究,虽然计算机在科学发展的过程中发挥了重大的作用,但是它只是一个工具,一个没有灵魂的工具而已.所谓的计算机科学实际上是对问题.解决问 ...
- hdu6376 度度熊剪纸条-----01背包
题目:度度熊有一张纸条和一把剪刀. 纸条上依次写着 N 个数字,数字只可能是 0 或者 1. 度度熊想在纸条上剪 K 刀(每一刀只能剪在数字和数字之间),这样就形成了 K+1 段. 他 ...
- oh my zsh 常用插件
date: "2020-10-18T12:36:00+08:00" title: "oh my zsh 常用插件" tags: ["zsh" ...
- kibana-安装-通过docker
拉取镜像 docker pull kibana:7.9.1 创建用户自定义网络 docker network create esnet 运行Kibana docker run --name ...
- 判断ip地址是属于国内还是国外
一,如何判断一个ip地址是否属于国内? 我们以前使用淘宝提供的一个api地址进行判断,但经常出现打不开的报错, 因为只需要判断是国内或国外,于是考虑自己搞一个简单的. 分配给国内的ip地址在apnic ...
- Windows Server 2003 Enterprise Edition SP2
SN: MPQ6X-3MCCF-47H9T-TKC2F-T69WM