c++操作excel表格通过身份证号计算年龄
来源:互联网 发布:动漫咨询的软件 编辑:程序博客网 时间:2024/05/16 10:38
1、将excel表格另存为csv格式,比如文件内容如下:
2、我们的目的是在身份证号后面一列加上年龄。
3、代码实现的功能是批量处理多个类似的文件,自动计算年龄。
4、注意将处理的文件放在工程work目录下,且在工程目录下新建一个out目录。
5、main.cpp:
#include <iostream>#include <fstream>#include <sstream>#include <string>#include <vector>#include <io.h>using namespace std;string Trim(string& str){ str.erase(0,str.find_first_not_of(" \t\r\n")); str.erase(str.find_last_not_of(" \t\r\n") + 1); return str;}int work(string filenme){ string infilename = "work/"; infilename += filenme; ifstream fin(infilename); string outfilename = "out/"; outfilename = outfilename + filenme; ofstream fout(outfilename); int idNumCol = 3;//身份证号在第几列 int firstRowFlag = 1; int yearIndex = 0; int year; int mon; int day; int age; //当前时间 int rYear = 2017; int rMon = 9; int rDay = 1; cout << endl; string line; while (getline(fin, line)) { ostringstream ost; //cout << line << endl; if(firstRowFlag == 1) { line = line + ',' + "年龄"; fout << line << endl; firstRowFlag = 0; continue; } istringstream sin(line); vector<string> fields; string field; while (getline(sin, field, ',')) { fields.push_back(field); } if(fields[idNumCol-1] == "") continue; string num = Trim(fields[idNumCol-1]); //找到第一个数字,然后计算year的位置 for (int i = 0; i <= num.size() - 1;i++) { if (num[i] >= '0'&&num[i] <= '9') { yearIndex = i + 6; break; } } //计算他的出生日期 year = (num[yearIndex]-48)*1000 + (num[yearIndex+1]-48)*100 + (num[yearIndex+2]-48)*10 + (num[yearIndex+3]-48); mon = (num[yearIndex+4]-48)*10 + (num[yearIndex+5]-48); day = (num[yearIndex+6]-48)*10 + (num[yearIndex+7]-48); //年龄计算 age = rYear-year; if(mon > rMon) { age--; } else if(mon == rMon) { if(day > rDay) { age--; } } ost << age; line = line + ','; line = line + ost.str(); cout << line << endl; fout << line << endl; } return 0;}int main(int argc, char* argv[]){ _finddata_t file; long lf; if((lf = _findfirst("work//*.*", &file))==-1l) { cout<<"文件没有找到!\n"; } else { cout<<"\n文件列表:\n"; while( _findnext( lf, &file ) == 0 ) { cout<<file.name; if(file.attrib == _A_NORMAL) cout<<" 普通文件 "; else if(file.attrib == _A_RDONLY) cout<<" 只读文件 "; else if(file.attrib == _A_HIDDEN ) cout<<" 隐藏文件 "; else if(file.attrib == _A_SYSTEM ) cout<<" 系统文件 "; else if(file.attrib == _A_SUBDIR) { cout<<" 子目录 "; //do something } else { cout<<" 存档文件 "; work(file.name); } cout<<endl; } } _findclose(lf); getchar(); return 0;}
5、结果如下:
阅读全文
0 0
- c++操作excel表格通过身份证号计算年龄
- 根据身份证号计算年龄
- 通过身份证号获取年龄
- 根据身份证号计算年龄、性别
- Excel表格中根据身份证号获取出生日期、生日、年龄、性别、工龄、退休龄
- 输入身份证号和年份计算年龄
- 通过身份证号动态获取生日、性别、年龄
- 通过出生日期计算年龄
- C语言 身份证号解析年龄和性别
- C语言操作Excel表格
- C语言操作Excel表格
- C语言操作Excel表格
- 如何在Excel表格中输入身份证号
- EXCEL教程-根据身份证号得到年龄性别出生日期等信息
- EXCEL教程-根据身份证号得到年龄性别出生日期等信息
- JS根据身份证号提取出生日期并计算年龄
- 在JS中根据身份证号计算出生日期和年龄
- oracle 通过身份证号 查询年龄大于60岁的人
- 日本比特币交易所将从10月开始接受监管
- 每日区块链:欧洲最大港口成立区块链研究实验室;塞拉利昂重点发展国家区块链计划
- QTableWidget的详细设置
- CommonsMultipartResolver进行文件上传
- 滚动到锚点
- c++操作excel表格通过身份证号计算年龄
- elasticsearch 2.4.6 集群+kibana 4.6安装部署学习记录
- 题目171:聪明的kk
- [codevs1159]最大全零子矩阵
- 区块宝创始人兼CEO范李悦受邀参加36氪WISE×新金融行业峰会
- 每日区块链:日本风投公司Global Brain成立区块链分支机构;日本将区块链技术用于能源管理
- Android自定义Zxing扫一扫
- 欢迎使用CSDN-markdown编辑器
- 各种工具安装步骤大全