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

刚进公司实习,安排了对数据库信息的整理工作,具体内容为将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;   //文件ID

int 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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UltraEdit是一款功能强大的文本编辑和阅读工具。它具有许多优点,例如可以打开、阅读和编辑二进制文件的能力。在Windows10操作系统上安装UltraEdit64的过程如下所示: 1. 首先,从官方网站下载UltraEdit安装文件。根据你的计算机是32位还是64位选择对应的安装文件。 2. 下载完成后,找到UltraEdit安装文件,右键点击并以管理员身份运行。 3. 在安装向导中,选择安装路径。你可以选择默认的安装路径,或者自定义一个你喜欢的路径。 4. 在选择安装完成之前,会让你选择是否安装UltraCompare软件。UltraCompare是一款文件内容比较工具,可以比较多种文件类型的两个或多个文件之间的差异性。根据个人需求,你可以选择是否安装。 5. 等待安装完成。一旦安装完成,你就可以开始使用UltraEdit来进行文本编辑和阅读了。 总结起来,下载并安装UltraEdit是一个很简单的过程。你只需要从官方网站下载安装文件,然后按照安装向导的指引进行安装就可以了。安装完成后,你就可以享受UltraEdit强大的文本编辑和阅读功能了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [《软件安装与使用教程》— UltraEdit在Windows操作系统安装步骤教程](https://blog.csdn.net/meenr/article/details/124222960)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值