导出为指定格式的文件。语法表达式。ExportAsFixedFormat(Type、FileName、Quality、IncludeDocProperties、IgnorePrintAreas、From、To、OpenAfterPublish、FixedFormatExtClassPtr)表达一个代表Worksheet对象的变量。导出为指定格式的文件。语法表达式。ExportAsFixedFormat(Type、FileName、Quality、IncludeDocProperties、IgnorePrintAreas、From、To、OpenAfterPublish、FixedFormatExtClassPtr)表达一个代表Worksheet对象的变量。
首先,我们找到一篇我们需要进行自动编号的word文档。
打开word文档,选中我们需要进行自动编号或者生成序列号的部分文字内容。
点击顶部菜单“开始”找到菜单下面的快捷生成序列号的图标(有两个,可根据需要进行选择)。
选择你需要的需要图标之后,确定即可生成成功。
如果在刚才的序列号图标库里没有找到你想要的符号编号。可点击“其它编号”进行更多的选择。
当然我们也可以在wps中,复制好你需要进行编号的文字,单击鼠标右键-----项目符号和编号。
#include<stdioh>
#include<stdlibh>
#include<stringh>
typedef struct htnode
{
int ww,parent,llink,rlink;
char cc,buffer[20]; //cc用来存放字母,buffer用来存放编码字符
}datatype;
struct httree
{
int m;
datatype ht;
};
typedef struct httree phttree;
phttree creatht(int m,char n,int w)
{
phttree pht;
int x1,x2,m1,m2;
pht=(phttree)malloc(sizeof(struct httree));
if(pht==NULL)
{
printf("申请空间失败!!\n");
return pht;
}
pht->m=m;
pht->ht=(datatype )malloc(sizeof(datatype)(2m-1));
for(int i=0;i<2m-1;i++)
{
pht->ht[i]llink=-1;
pht->ht[i]rlink=-1;
pht->ht[i]parent=-1;
if(i<m)
{
pht->ht[i]ww=w[i];
pht->ht[i]cc=n[i];
}
else
{
pht->ht[i]ww=-1;
pht->ht[i]cc='^';
}
}
for(i=0;i<m-1;i++)
{
m1=1000000; //有可能溢出
m2=m1;
x1=-1;x2=-1;
for(int j=0;j<m+i;j++)
{
if(pht->ht[j]ww<m1 && pht->ht[j]parent==-1) //寻找最小的数
{
m2=m1;
x2=x1;
m1=pht->ht[j]ww;
x1=j;
}
else if(pht->ht[j]ww<m2 && pht->ht[j]parent==-1) //寻找次小的数
{
m2=pht->ht[j]ww;
x2=j;
}
}
pht->ht[x1]parent=m+i; //构造内部结点
pht->ht[x2]parent=m+i;
pht->ht[m+i]ww=m1+m2;
pht->ht[m+i]llink=x1;
pht->ht[m+i]rlink=x2;
}
return pht;
}
void bianma(phttree pht,FILE f) //哈夫曼树编码
{
int p,w;
for(int i=0;i<pht->m;i++)
{
int x=1,y=0;
char bm[20];
p=pht->ht[i]parent; //取其父结点
w=i; //取本次循环的数组下标
printf("%c: ",pht->ht[i]cc);
fprintf(f,"%c: ",pht->ht[i]cc);
for(int j=0;j<20;j++) //令字符数组全为空
{
pht->ht[i]buffer[j]='\0'; //令哈夫曼编码数组所有元素为结束符,否则会出错
bm[j]=' '; //令bm数组所有元素为空字符,以便用来判断
}
bm[19]='\0'; //令bm数组最后一个元素为结束符,否则会出错
while(p!=-1) //当前结点为树根的时候停止循环
{
if(pht->ht[p]llink==w) //如果其左孩子为当前数组下标,则令编码为0
{
bm[19-x]='0';
}
else if(pht->ht[p]rlink==w) //如果其右孩子为当前数组下标,则令编码为1
{
bm[19-x]='1';
}
x+=1;
w=p; //转换数组下标
p=pht->ht[p]parent; //向上取父结点
}
for(j=0;j<20;j++) //输出字符数组的元素
{
if(bm[j]!=' ' && bm[j]!='\0')
{
pht->ht[i]buffer[y]=bm[j]; //如果bm元素不为空字符,则赋值给哈夫曼编码数组
printf("%c",pht->ht[i]buffer[y++]);
}
}
fprintf(f,"%s",pht->ht[i]buffer);
y=0;
printf("\n");
fputc('\n',f);
}
}
void main()
{
int m=27,r,i,j,k=0,l;
char c[500],e[20];
char a[]=" ";
FILE f;
/////////////// 初始化哈夫曼树 //////////////////////////////////////////
char n[27]={' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
'q','r','s','t','u','v','w','x','y','z'};
int w[27]={186,64,13,22,32,103,21,15,47,57,1,5,32,20,57,63,15,1,48,51,80,23,8,18,1,16,1};
for(j=0;j<20;j++) //初始化数组
e[j]='\0'; //令e数组的所有元素都为结束符,以便与哈夫曼编码比较
f=fopen("datatxt","wr"); //打开文件
if( f==NULL)
{
printf("文件打开失败!\n");
exit(1);
}
phttree tree=creatht(m,n,w); //创建哈夫曼树
////////////// 打印哈夫曼树 ///////////////////////////////////////////
fprintf(f,"\t%s\t%s\t%s\t%s\t%s\n","字符","频度","父结点","左孩子","右孩子");
printf("\t字符\t频度\t父结点\t左孩子\t右孩子\n");
for(i=0;i<(m2-1);i++)
{
printf("%d\t%c\t%d\t%d\t%d\t%d\n",i,tree->ht[i]cc,tree->ht[i]ww,
tree->ht[i]parent,tree->ht[i]llink,tree->ht[i]rlink);
fprintf(f,"%d\t%c\t%d\t%d\t%d\t%d\n",i,tree->ht[i]cc,tree->ht[i]ww,
tree->ht[i]parent,tree->ht[i]llink,tree->ht[i]rlink);
}
///////////// 打印哈夫曼编码 ////////////////////////////////////////////
printf("\n此哈夫曼编码为:\n");
fprintf(f,"%s","\n此哈夫曼编码为:\n");
bianma(tree,f);
//////////// 对字符串编码 /////////////////////////////////////////////////
printf("\n请输入要编码的字符串(以回车键结束输入):");
fprintf(f,"%s","\n请输入要编码的字符串(以回车键结束输入):");
gets(c); //获取字符串
r=strlen(c); //获取字符串长度
fprintf(f,"%s",c);
printf("\n对应字符串的编码为:");
fprintf(f,"\n\n%s","对应字符串的编码为:");
for(i=0;i<r;i++) //用循环将字符编码
{
for(j=0;j<m;j++) //从哈夫曼树中用循环寻找对应字符
{
if(c[i]==tree->ht[j]cc) //找到对应字符,然后编码
{
printf("%s",tree->ht[j]buffer);
fprintf(f,"%s",tree->ht[j]buffer);
break;
}
}
}
printf("\n");
fputc('\n',f);
/////////////// 对编码进行译码 //////////////////////////////////////////////////////
printf("\n请输入要译码的编码:");
fprintf(f,"\n%s","请输入要译码的编码:");
gets(c); //获取字符串
fprintf(f,"%s",c);
printf("\n对应编码的字符串为:");
fprintf(f,"\n\n%s","对应编码的字符串为:");
r=strlen(c); //获取字符串长度
for(i=0;i<r;i++)
{
e[k++]=c[i]; //将第i个编码字符赋值给用来比较的数组
for(j=0;j<tree->m;j++) //循环搜索哈夫曼编码
{
if(strcmp(e,tree->ht[j]buffer)==0) //判断编码字符串与哈夫曼某个编码是否一样
{
for(l=0;l<20;l++) //重新初始化e数组
{
e[l]='\0'; //令e数组的所有元素都为结束符,以便与哈夫曼编码比较
}
printf("%c",tree->ht[j]cc); //找到符合的编码,然后打印对应的字符
fprintf(f,"%c",tree->ht[j]cc);
k=0; //使K指向e数组的首数组元素,以便重新装载编码字符
break;
}
}
}
printf("\n\n");
fclose(f); //关闭文件,写出数据到文件
}
Excel精彩课程推荐·Excel表格零基础入门到快速精通·Excel-工作表办公自动化操作技巧·Excel-电子表格函数实战教程·Excel-电子表格透视表篇·Excel-电子表格图表绘制教程
办公软件的使用是一项非常基础的技能,可以帮助人们快速进行文字处理,表格制作,数据处理,制作演讲稿等。办公软件的应用范围很广,大到统计,小到记录,数字化办公等等都离不开办公软件的鼎力协助。为帮助用户快速掌握办公软件的使用,有Word、Excel、PPT、思维导图等办公软件的精品教学课程,都可以免费试学,还没有掌握办公软件的小伙伴们一定不要错过哦。
用Excel自动生成单据编号的教程
例如,要生成出库单的编号:编码通常以英文+数字完成。编码的英文字母可以为单据类型的大写首字母,例如出库单,就以CK为前缀。
方法一:使用最简单的rand函数,它可以生成0-1之间的一个随意数字。那么编码就可以按如下步骤完成:
1、将rand函数乘与1000,为的是将整数部分变为3位
2、再通过round函数求得0位小数的整数部分
3、在通过连接符&连接“CK”英文字母总体公式为:="NOCK-"&ROUND(RAND()1000,0)。
方法二:使用日期函数的today函数,取得当天的年月日作为编码。
1、使用today,取得当前的日期
2、再通过text函数,让今天的日期已年月日显示
3、在通过连接符&连接“CK”英文字母
总体公式为:="NOCK-"&TEXT(TODAY(),"yymmdd")。
方法三:使用日期函数的now函数,取得当天的实时时间作为编码。
1、使用now,取得当前的时间,该函数含有年月日时分秒等
2、再通过text函数,以年月日时分秒的具体数字显示,不显示“-”“:”这类符号
3、在通过连接符&连接“CK”英文字母
总体公式为:="NOCK-"&TEXT(NOW(),"yymmddhhmmss")。
方法四:使用日期函数的now函数和today函数相结合,获取时间数字的小数部分。
1、使用now,取得当前的时间,该函数含有年月日时分秒等
2、使用today,取得当前的日期
3、两者相减,获取小数部分(就是具体是时分秒)
4、再通过round函数求得3位小数后乘与1000
5、在通过连接符&连接“CK”英文字母
总体公式为:=="NOCK-"&ROUND((NOW()-TODAY()),3)1000。
以上就是用Excel表格演示自动生成单据编码的四种方法了,Excel是目前流行的个人计算机数据处理软件,具有表格、图表、函数、数据库等功能,想自学Excel的一定要到羽兔来看看哦。
excel做一个自动生成的编码的方法:
1Vlookup实现
假设颜色编码表在sheet1里,A列里是颜色“黑”,B列里是编码“01”,要做的表在sheet2中,A列为“款号”B列为“颜色”C列为“SKU编码”,
那就在C2中写入以下公式:“=A2 & VLOOKUP(B2,SHEET1!A:B,2,0)”,然后向下拉即可。
21首先打开要编辑的excel 电子表格 如图
2在编号底下一般要输入数字排列,比如输入1 如图
3在下一行输入2 如图
4单击左键选择1和2的单元格 ,然后再单元格的右下角点击不放,往下拖动 如图
5完成以上操作之后 ,就可以自动在编号那里生成排列数字了 如图
如何生成唯一的随机数
从第一次开始,while(a[50]) a[50]=0时,就是因为它为0了,循环不成立才往下执行,不然a[50]=1就一直在while(a[m=rand()%100]);这里循环了,注意,这里是有分号的,while在这里只作用于这个分号之前,如果条件成立,就一直死循环,不会往下了。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)