api生成excel文件指定编码

api生成excel文件指定编码,第1张

导出为指定格式的文件。语法表达式。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在这里只作用于这个分号之前,如果条件成立,就一直死循环,不会往下了。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/langman/3498186.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-15
下一篇2023-08-15

发表评论

登录后才能评论

评论列表(0条)

    保存