刚进公司实习,安排了对数据库信息的整理工作,具体内容为将EXCEL总表的所有车型的数据根据不同车型划分为多个EXCEL表格。在数据复制的过程中,刚开始使用最基本的复制粘贴功能,文件中的数据采用外部导入的方式传输到EXCEL中,其中遇到一些问题并采用一些方案解决1.数字位数比较大(eg:16位)在复制到EXCEL时会被EXCEL转换成科学计数法解决方法:将数据所在表格格式 通过开始工具栏 转换为 文本格式2.在给数据计数时在同一列向下依次加一解决方法:鼠标指向数据格右下角出现➕符号,此时按住ctrl键向下持续拖动即可(当不按ctrl时则会向下复制相同的数字)(如果起始数字为文本格式,则右下角向下拖动时不按ctrl会向下递增加一,且后续数字也为文本格式。按住ctrl则数字不变进行复制)3.在一列递增的一系列数字(大量:几十万行)中的某些固定位置添加相同英文字母(eg:  1122AB33  1122AB34  1122AB35 ......)解决方法:在EXCEL中将所有数字加上英文字母很困难,可以使用UE的列模式来添加首先将这一系列数复制到UE中,然后使用快捷键 alt+c 进入列模式中,将光标置于需要添加的位置,按住shift后,使用鼠标将右侧进度条拉到底,在最下端同一位置点击一下,此时出现一条蓝色线条,这时添加内容和删除可以多行同时进行4.当数据量比较小时复制粘贴速度并不慢,但是数据量大时速度很慢,此时主管提供了文件复制提取内容的小工具,速度大幅度提升

文件信息提取方式:

第一列为车型编号,车型编号相同的有很多数据(数据范围内的),最后一列为数据内容所在的文件id序号
例如车牌为奔驰,车型编号为100,数据范围为NZ201-NZ400,则数据量为200(400+1-201),且在最后一列id对应的文件中正好也有200个数据,需要将这200个数据依照201-400依次匹配

如上所示,第一列为序号,第二列为车型编号,第三列为数据范围中的数,第四列为文件中提取出来的数据

使用工具代码如下:

#include <stdio.h>
#include <stdlib.h>

/* locate: 函数功能为在一串字符串中找到指定字符的坐标
参数: @src: 需要查找的目的字符
@str: 指定字符串
@str_length: 指定字符串的长度
返回值:找到的位置,
值为-1则错误
*/
int locate(char src,char *str,int str_length)
{
int i=0;
for(i=0;i<str_length;i++)
{
if(str[i] == src)
{
return i;
}
}
if(i == str_length)
{
printf(“在字符串中找不到指定字符: “);
printf(”%c\n”,src);
return -1;
}

}
char *GetStringAddNew(char *strData,char *pFlag,char * strMask,char * strMask1,char * strMask2)
{
int i=0;
int j=0;
int k=0;
int m=0;
int position=0;
char *strResult = NULL;
char *strCmpData = NULL;
//printf(strData);
int istrLen = strlen(strData);
int istrLenMsk = strlen(strMask);
int istrLenMsk1 = strlen(strMask1);
int istrLenMsk2 = strlen(strMask2);

if(istrLen != strlen(pFlag))
{printf("数据长度错误,请校验两个字符串长度");
}strResult = (char *) malloc(istrLen+1);
memset(strResult,0x00,istrLen+1);
for(i=0;i<istrLen;i++)
{strResult[i] = strData[i];
}i = istrLen - 1;if(istrLenMsk != 0)
{strCmpData = (char *) malloc(istrLenMsk+1);memset(strCmpData,0x00,istrLenMsk+1);strcpy(strCmpData,strMask);
}while(k==0)
{if(pFlag[i] == '0'){i--;}if(pFlag[i] == 'P'){if(strData[i] == '9'){strResult[i] = '0';i--;}else{strResult[i] += 1;k=1;}}if(pFlag[i] == 'A'){if(strData[i] == 'Z'){strResult[i] = 'A';i--;}else{strResult[i] += 1;k=1;}}if(pFlag[i] == 'M'){if(strData[i] == strCmpData[istrLenMsk - 1]){strResult[i] = strCmpData[0];i--;}else{//strResult[i] += 1; //寻找pFlag[i]在change中的位置position = locate(strData[i],strCmpData,istrLenMsk);strResult[i] = strCmpData[position +1];k=1;}}if(pFlag[i] == 'N'){if(strData[i] == strMask1[istrLenMsk1 - 1]){strResult[i] = strMask1[0];i--;}else{//strResult[i] += 1; //寻找pFlag[i]在change中的位置position = locate(strData[i],strMask1,istrLenMsk1);strResult[i] = strMask1[position +1];k=1;}}if(pFlag[i] == 'O'){if(strData[i] == strMask2[istrLenMsk2 - 1]){strResult[i] = strMask2[0];i--;}else{//strResult[i] += 1; //寻找pFlag[i]在change中的位置position = locate(strData[i],strMask2,istrLenMsk2);strResult[i] = strMask2[position +1];k=1;}}

/*
if(pFlag[i] == ‘P’)
{
if(strData[i] == strMask[istrLenMsk-1])
{
strResult[i] = strMask[0];
i–;
}
else
{
for(j=0;j<istrLenMsk;j++)
{
if(strResult[i] == strMask[j])
{
strResult[i] = strMask[j+1];
break;
}
}
k=1;
}
}

/
/

if(pFlag[i] == ‘M’)
{
if(strData[i] == change[change_length - 1])
{
strResult[i] = change[0];
i–;
}
else
{
//strResult[i] += 1;
//寻找pFlag[i]在change中的位置
position = locate(pFlag[i],change,change_length);
strResult[i] = change [position +1];
k=1;
}
}

*/
}

return strResult;

}

char * GetStringAdd(char *strData,char *pFlag)
{
int i=0;
int j=0;
int k=0;
char *strResult = NULL;
//printf(strData);
int istrLen = strlen(strData);
if(istrLen != strlen(pFlag))
{
printf(“数据长度错误,请校验两个字符串长度”);
}

strResult = (char *) malloc(istrLen+1);
memset(strResult,0x00,istrLen+1);
for(i=0;i<istrLen;i++)
{strResult[i] = strData[i];
}i = istrLen - 1;while(k==0)
{if(pFlag[i] == '0'){i--;}if(pFlag[i] == 'P'){if(strData[i] == '9'){strResult[i] = '0';i--;}else{strResult[i] += 1;k=1;}}if(pFlag[i] == 'A'){if(strData[i] == 'Z'){strData[i] = 'A';i--; }else{strData[i] += 1;k=1;}}}return strResult;

}

char GetStrValue(charstrSrc)
{
int i=0;
int j=0;
int istrLen = 0;
int iPosition = 0;
char *strResult = NULL;

istrLen = strlen(strSrc);
strResult = (char *) malloc(istrLen+1);
memset(strResult,0x00,istrLen+1);for(i=0;i<istrLen;i++)
{if(strSrc[i]==':'){j++;if(j==2){iPosition = i;break;}}
}for(i=iPosition+1;i<istrLen;i++)
{strResult[i-iPosition-1] = strSrc[i];
}return strResult;

}

int main()
{
/*
char * Src=“SeriesIndex:00000007 - Axis:13223111333122131133”;
char *dest = GetStrValue(Src);
printf(dest);
int i=0;
char *strStart = “551112”;
char *strMask = “123456”;
for(i=0;i<873;i++)
{
printf(strStart);
printf("\n");
strStart = GetStringAddNew(strStart,“00PPPP”,strMask);
}
*/

//readResouceFile("K01","K99","0PP");
char * strprint ;
char * strStart = "101A501";
char * strEnd =   "410E624";
char * strMask =  "MPPNOPP";
int seriesID =    6730; //系列ID
int fileID =      3022;   //文件IDint n_str = 3  ;  //指定存在几种自定义值(最多3种)
char * strMaskString = "1234"; //M
char * strMaskString1 = "ABCDE"; //N
char * strMaskString2 = "56"; //O//以下代码为生成需要加载文件名称的文件名
int iStrMaskLength = 0;
char *strFileDB1 = "D:\\ycl\\文件\\BIT\\ic";
char strFileDB2[5] = {0};
char strFileDB3[5] = ".bit";
sprintf(strFileDB2,"%04d",fileID);
char strFileDBAll[1024] = {0};
strcat(strFileDBAll,strFileDB1);
strcat(strFileDBAll,strFileDB2);
strcat(strFileDBAll,strFileDB3);
printf(strFileDBAll);//以下代码为生成需要生成文件的文件名
char *strFileSier1 = "D:\\test\\";
char strFileSier2[6] = {0};
char strFileSier3[6] = ".txt";
sprintf(strFileSier2,"%d",seriesID);
char strFileSierAll[1024] = {0};
strcat(strFileSierAll,strFileSier1);
strcat(strFileSierAll,strFileSier2);
strcat(strFileSierAll,strFileSier3);
printf(strFileSierAll);iStrMaskLength = strlen(strMaskString);
FILE *fp = NULL;
FILE *fpDB = NULL;
char strDB[1024] = {0};fp = fopen(strFileSierAll, "w+");
fpDB = fopen(strFileDBAll,"r");while(1)
{if(strcmp(strStart,strEnd)!=0){printf(strStart);printf("\n");fputs(strFileSier2,fp);fputs("\t",fp);fputs(strStart,fp);fputs("\t",fp);fgets(strDB,255,fpDB);if(strlen(strDB) < 5){printf("数据出现错误,目标文件少于数据大小");}fputs(GetStrValue(strDB),fp);memset(strDB,0x00,1024);//   if(iStrMaskLength < 2)if(n_str == 0)       //不存在自定义变化字符串{strStart = GetStringAdd(strStart,strMask);}else              //存在自定义变化字符串{strStart = GetStringAddNew(strStart,strMask,strMaskString,strMaskString1,strMaskString2);}//  system("pause");}else{break;}
}
printf("\n");
fputs(strFileSier2,fp);
fputs("\t",fp);
fputs(strEnd,fp);
fputs("\t",fp);
fgets(strDB,255,fpDB);
fputs(GetStrValue(strDB),fp);
memset(strDB,0x00,1024);fclose(fp);
printf(strEnd);
printf("/n");fgets(strDB,255,fpDB);
if(strlen(strDB) > 5)
{printf("数据出现错误,目标文件超出数据大小");
}
fclose(fpDB);
//strprint = GetStringAdd("K09999","0PP0PP");//printf(strprint);system("pause");
return 0;

}

随笔(关于UE<ultraedit>的列模式使用及EXCEL使用遇到的简单问题)相关推荐

  1. UltraEdit软件列模式的一些使用技巧

    1.打开UltraEdit软件 2.点击"编辑"->"列模式" ,进入"列模式" 编辑功能 3."列模式"主要有& ...

  2. 列模式 文本编辑器_UltraEdit 24.2 文本编辑器免费版

    UltraEdit是由IDM官方最新出品的文本编辑器版本,它是一款性价比全球一流的文本.十六进制,HTML.PHP.Java 和 JavaScript程序文本编辑器,被认为是世界上最好的文本编辑器.U ...

  3. 原型设计中展示数据的“行模式”与“列模式”的选择

    在原型设计中的一点点思考与总结: 界面中操作数据"行模式"还是"列模式",所谓"行模式"即将被操作的对象每个作为一行,而"列模式& ...

  4. idea列模式按列选取代码或按行选取代码快捷键

    名称:列模式/行模式 KeyMap:Column Selection mode 组合快捷键:shift cmd 8 作用:按行或者列选取代码 设置:idea>preferences>Key ...

  5. Mac下sublime text3列模式下插入顺序数字编号

    Mac下sublime text3列模式下插入顺序数字编号 相信大家在工作工程中会遇到在操作在某段文本时,需要批量操作同一列多行数据时,需要在每行相同的列位置添加类同的内容,煞是费时. 接下来我们要介 ...

  6. python excel取列_python取excel表格第一列数据-python操作excel,使用xlrd模块,获取某一列数据的......

    怎样用python,读取excel中的一列数据 Python对Excel的读写主要有xlrd.copyxlwt.xlutils.openpyxl.xlsxwriter几种. 1.xlrd主要用来读百取 ...

  7. python利用表格中的某一个列_python取excel表格第一列数据?python操作excel,使用xlrd模块,获取某一列数据的语句为...

    用Python修改excel中一列数据 可以使用pandas库,先读取excel文件,然后使用pandas库来修改一列,然后写入文件即可. 怎样用python,读取excel中的一列数据 sheet. ...

  8. 如何将多行和多列转换为行和行Excel

    如何将多行和多列转换为行和行Excel 来自官方的文档 摘要 使用Microsoft Excel,使用工作表公式OFFSET将跨多行和多列的数据隐藏为数据库格式 (列) . 详细信息 以下示例将一列中 ...

  9. excel根据条件列转行_如何将excel里的一列数据转为一行 excel数据列转行的办法步骤...

    如何将excel里的一列数据转为一行 excel数据列转行的办法步骤 我们的生活中越来越离不开PC,但在使用PC的过程中总会遇到各种各样的问题.知识屋致力于给PC小白朋友们介绍一些简单常用问题的解决办 ...

最新文章

  1. [UWP] 用 AudioGraph 来增强 UWP 的音频处理能力——AudioFrameInputNode
  2. react引入多个图片_重新引入React:v16之后的每个React更新都已揭开神秘面纱。
  3. 启动子级时出错_【本音知识】弹钢琴时如何背谱?
  4. python爬虫xpath教程_使用 Xpath 进行爬虫开发
  5. 友元是c还是java_[C++]【类】友元的三种声明及注意事项
  6. RT-Thread移植
  7. 屈原的《离骚》《天问》《九歌》《楚辞》
  8. 数据中心断路器整定值计算(二)
  9. GIS空间分析(二)—— 空间分析的历史与发展
  10. 2014年三维地理信息系统 研究成果
  11. WP模板Ripro9.0免扩展二开版+全解密无后门
  12. (五)Vue之data与el的两种写法
  13. 【Leetcode】最长递增子序列问题及应用
  14. vue显示日历插件_一个干净轻巧的插件,用于显示属性日历
  15. 【Web安全】一文说清XSS
  16. Hadoop资源(收藏)
  17. win10 批量重命名文件
  18. 目前为止小程序审核不通过原因整理汇总
  19. 2021年电工(初级)考试及电工(初级)找解析
  20. 苹果开发者账号进入调查期该怎么办?

热门文章

  1. Java中同步和异步的区别是什么?优点缺点以及概念理解
  2. 加密之数字证书和PFX信息交换
  3. 计算机主板 安装系统,电脑更换主板不用重装系统的方法有哪些
  4. 如何做好设备管理工作?“五步法”轻松搞定
  5. VCU整车控制器 ,量产模型搭配底层软件量产VCU模型搭配英飞凌tc234底层驱动
  6. 安装ngtpy踩坑记录(C++打包Python的一些小坑)
  7. PLC程序的基本组成和编程语言
  8. 怎么用win10自带虚拟机
  9. Carsim和simulink联合仿真过程中输入与输出不匹配的问题解决
  10. 怎样在电脑上上传图片_怎么把手机的照片传到电脑,详细教您电脑上传图片到手机...