前几天一个朋友让参谋写个程序,实现简单的excel中的数据分别填充到work中,一行参数写一个work
考虑到word格式复杂,本人c也很捉急,就决定分别复制到txt中,然后创建txt文件,写入,人工复制到word中。因为对格式没要求,所以很简单,如下:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#define ParameterNumOfOneFile 3
#define ParameterFileName "list.txt"
#define ModuleFileName "file.txt"
int main(int argc, const char * argv[]) {
void writeParaToFile(char paraArray[ParameterNumOfOneFile][100]);
void writeParaToFile2(char para000[100],char para001[100],char para002[100]);
//打开参数文件,读取参数至内存
FILE * pfp=fopen(ParameterFileName,"r");
char para000[100];
char para001[100];
char para002[100];
while(ParameterNumOfOneFile == fscanf(pfp,"%s %s %s",para000,para001,para002))
{
char para[ParameterNumOfOneFile][100];
for (int i = 0; i < 100; i++) {
para[0][i] = para000[i];
if (para000[i] == 0) {
break;
}
}
for (int i = 0; i < 100; i++) {
para[1][i] = para001[i];
if (para000[i] == 0) {
break;
}
}
for (int i = 0; i < 100; i++) {
para[2][i] = para002[i];
if (para000[i] == 0) {
break;
}
}
//拿到了参数,开始写入相应文件
// writeParaToFile(para);
writeParaToFile2(para000,para001,para002);
}
//关闭文件
fclose(pfp);
return 0;
}
void writeParaToFile2(char para000[100],char para001[100],char para002[100]){
char fileName[100*ParameterNumOfOneFile];
strcat(strcat(strcat(strcat(strcat(fileName,""),para000),para001),para002),".txt");//在本地文件夹中创建txt文件
FILE * newfp;
newfp=fopen(fileName,"wb");
//打开模板txt文件
FILE * mfp=fopen(ModuleFileName,"r");
char moduleString[100000];
char tmpStr[1000];
while (1 == fscanf(mfp,"%s",tmpStr)) {
if (strstr(tmpStr,"TXT") ) {
//包含
int currentParaIndex = (int)tmpStr[4];
switch (currentParaIndex - 49) {
case 0:
fputs(para000,newfp);
break;
case 1:
fputs(para001,newfp);
break;
case 2:
fputs(para002,newfp);
break;
default:
break;
}
}else{
fputs(tmpStr,newfp);
}
fputs("\n",newfp);
}
fclose(newfp);
fclose(mfp);
memset(fileName, 0x00, sizeof (char) * 300);
return;
}
void writeParaToFile(char paraArray[ParameterNumOfOneFile][100]){
char para000[100];
char para001[100];
char para002[100];
for (int i = 0; i < 100; i++) {
para000[i] = paraArray[0][i];
if (para000[i] == 0) {
break;
}
}
for (int i = 0; i < 100; i++) {
para001[i] = paraArray[1][i];
if (para000[i] == 0) {
break;
}
}
for (int i = 0; i < 100; i++) {
para002[i] = paraArray[2][i];
if (para000[i] == 0) {
break;
}
}
char fileName[100*ParameterNumOfOneFile];
strcat(strcat(strcat(fileName,para000),para001),para002);
printf("***fileName == %s \n",fileName);
memset(fileName, 0x00, sizeof (char) * 300);
return;
strcat(fileName,".txt");
FILE * newfp;
newfp=fopen(fileName,"wb");
//打开模板txt文件
FILE * mfp=fopen(ModuleFileName,"r");
char moduleString[100000];
char tmpStr[1000];
while (1 == fscanf(mfp,"%s",tmpStr)) {
if (strstr(tmpStr,"TXT") ) {
//包含
int currentParaIndex = (int)tmpStr[3];
tmpStr[0] = 0;
tmpStr[1] = 0;
tmpStr[2] = 0;
tmpStr[3] = 0;
for (int i = 0; i < 100; i++) {
tmpStr[i] = paraArray[currentParaIndex][i];
if (tmpStr[i] == 0) {
break;
}
}
}
printf("NOW == %s, tem == %s \n",moduleString,tmpStr);
fputs(tmpStr,newfp);
}
fclose(newfp);
fclose(mfp);
}
PS:第一个写入文件方法有问题,2可以