libxl 的使用,读取时间格式
最近开发使用到 libxl,用的是3.8.0 破解版。
具体过程:
1、将lib.dll放在exe同目录下,在代码中引用 libxl.lib
#pragma comment(lib, ".\\Lib\\libxl.lib")
2、包含头文件 libxl.h
3、实例
//m_strFilePath为excel文件的完整路径
CString ext = ::PathFindExtension(m_strFilePath);
if(ext.CompareNoCase(L".xlsx") == 0)
book = xlCreateXMLBook(); //针对.xlsx
else
book = xlCreateBook(); //针对.xls if(!book)
{
return;
} const wchar_t * x = L"Halil Kural";
const wchar_t * y = L"windows-2723210a07c4e90162b26966a8jcdboe";
book->setKey(x, y); //设置key,即破解^_^ if(!book->load(m_strFilePath))
{
return;
} int sheetCount = book->sheetCount(); //工作表总数量
for (int index = 0; index < sheetCount; ++index)
{
Sheet *sheet =book->getSheet(index++);
if(!sheet)
continue;
int firstRow = sheet->firstRow(); //有数据的第一行行号
int lastRow = sheet->lastRow(); //有数据的最后一行行号
int firstCol = sheet->firstCol(); //有数据的第一列列号
int lastCol = sheet->lastCol(); //有数据的最后一列列号 //找出表头(测试数据)
map<int,wstring> mapColNames;
for(int c = firstCol; c < lastCol; ++c)
{
const wchar_t* str = sheet->readStr(firstRow, c);
if(!str)
continue;
mapColNames[c] = str;
} //确定每个表头代表的意义(测试数据)
map<int,eFIELD> mapColTypes;
for (auto it = mapColNames.begin(); it != mapColNames.end(); ++it)
{
eFIELD e = GetFieldTypeByName(it->second.c_str());
mapColTypes[it->first] = e;
} //逐行读取数据
for (int row = firstRow+1; row < lastRow; ++row)
{
for(int c = firstCol; c < lastCol; ++c)
{
CString strValue;
CellType t = sheet->cellType(row, c);
if(t == CELLTYPE_NUMBER)
{
double db = sheet->readNum(row, c);//test
LONG64 number = (LONG64)db;
if(number > 0)
strValue.Format(L"%I64d", number);
}
else
const wchar_t* s = sheet->readStr(row, c); //读取内容
}
}
}
4、读取时间格式的数据
CString strValue;
bool bDate = sheet->isDate(row, col);
if (bDate)
{
double db = sheet->readNum(row, col);
int year=, month=, day=;
bool b = book->dateUnpack(db, &year, &month, &day); //将读取的时间 转换为时间戳
unsigned __int64 ftNow;
SYSTEMTIME time;
ZeroMemory(&time, sizeof(SYSTEMTIME)),
time.wYear = year;
time.wMonth = month;
time.wDay = day;
SystemTimeToFileTime(&time,(LPFILETIME)&ftNow);
__int64 timeStamp = (__int64)((ftNow-0x019db1ded53e8000)/);//毫秒
strValue.Format(L"%I64d", timeStamp);
}
libxl 的使用,读取时间格式的更多相关文章
- poi导入读取时间格式问题
万能处理方案: 所有日期格式都可以通过getDataFormat()值来判断 yyyy-MM-dd-----14 yyyy年m月d日--- 31 yyyy年m月-------57 m月d日 ---- ...
- 使用POI读取xlsx文件,包含对excel中自定义时间格式的处理
package poi; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcepti ...
- NPOI 读取excel的时候,时间格式的处理
excel的时间格式是:CellType.Numeric 要判断时间还需要方法:DateUtil.IsCellDateFormatted(cell)的帮助: 示例代码如下: ICell cell = ...
- iOSDate时间格式(转)
在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理.例如: //实例化一个NSDateFormatter对象 NSDateForma ...
- iOS开发之时间格式的转化
在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如:如何将格式为“12-May-14 05.08.02.000000 PM” ...
- POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取
第二讲 1.创建一个时间格式的单元格 Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿 Sheet sheet=wb.createSheet("第一个 ...
- IOS时间格式转换
在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如:如何将格式为“12-May-14 05.08.02.000000 PM” ...
- IOS 时间格式 时间转换 大总结
//实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init]; //设定时间格式,这里 ...
- Eclipse 改动凝视的 date time 日期时间格式,即${date}变量格式
Eclipse 改动凝视的 date time 日期时间格式,即${date}变量格式 找到eclipse安装文件夹以下的plugins文件夹,搜索 org.eclipse.text ,找到一个jar ...
随机推荐
- 20145227鄢曼君《网络对抗》MSF基础应用
20145227鄢曼君<网络对抗>MSF基础应用 主动攻击:ms08_067漏洞攻击实践 两台虚拟机,其中一台为kali,一台为windows xp sp3(英文版).在VMware中设置 ...
- Android 实践项目开发二
在地图开发中项目中,我这周主要完成的任务是和遇到的问题是以下几个方面. 1.在本次的项目中主要是利用百度地图的.jar包实现地图的定位与搜索功能,需要在百度地图开发中心网站取得 密钥,并下载相关.ja ...
- 判断两个vector是否相等
转载:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26354188&id=3198604 #include < ...
- POJ 2425 A Chess Game(有向图SG函数)题解
题意:给一个有向图,然后个m颗石头放在图上的几个点上,每次只能移动一步,如果不能移动者败 思路:dfs打表sg函数,然后求异或和 代码: #include<queue> #include& ...
- sql server 存储过程 procedure
https://www.cnblogs.com/selene/p/4483612.html
- stm32 延时函数 delay_ms 范围
void delay_us(u32 nus) { u32 temp; SysTick->LOAD=nus*fac_us; //时间加载 SysTick->VAL=0x00; //清空计数器 ...
- BZOJ 1001: [BeiJing2006]狼抓兔子(s-t平面图+最短路求最小割)
http://www.lydsy.com/JudgeOnline/problem.php?id=1001 题意: 思路:这道题目是最小割题目,但是吧你直接套用Dinic是会超时的. 这里有种很奇妙的做 ...
- json.dump()和json.dmups()的区别
在python中支持json合适的数据是通过json模块实现的. 在序列化json数据的时候遇到两个形状很像的函数,dump()和dumps().主要说说他们的区别 先看看官方文档的说明:https: ...
- Ubuntu 14.04 执行指定用户的命令
#!/bin/bashsudo -u username /home/sco/start_server.sh 或者 #!/bin/bashsu - username -c /etc/init.d/xxx ...
- 深入理解Hadoop之HDFS架构
Hadoop分布式文件系统(HDFS)是一种分布式文件系统.它与现有的分布式文件系统有许多相似之处.但是,与其他分布式文件系统的差异是值得我们注意的: HDFS具有高度容错能力,旨在部署在低成本硬件上 ...