C程序以表格格式将结构数据保存到Excel文件

时间:2017-12-12 12:30:18

标签: c excel

我的C代码将数据保存到excel文件,但问题是它没有显示id并且它以不同格式保存,没有任何空格所以如何保存表格格式的结构数据。 结构如下:

struct data
{
   int id;
   char name[20];
   char address[30];
}

我将记录保存到Record.xlsx文件。这是我如何做的代码

fwrite(&s, sizeof(s), 1, fp);

我已输入1作为ID,Pratik作为名称,India作为地址。以下是截图如何保存: Screenshot Of How It Is Saved 这是截图我想要的,也是重要的事情,我只想使用 fwrite 选项: How I Want To Save By C Program

请帮助我。

1 个答案:

答案 0 :(得分:1)

#include<stdio.h>
#include<conio.h>
#include<string.h>
struct data
{
    int id;
    char name[20];
    char address[30];
}s;
void strt();
void add();
void search();
void del();
void disp();
void update();
void multiple_add();
void addn();
void main()
{
    strt();
    getch();
}

void strt()
{
      int c;
    printf("\n\n");
    printf("\n\t------Select One Of The Choices------\n");
    printf("(1)\tAdd Student\n");
    printf("(2)\tAdd Multiple Students\n");
    printf("(3)\tView All Student's\n");
    printf("(4)\tSearch Student\n");
    printf("(5)\tDelete A Student\n");
    printf("(6)\tUpdate A Student\n");
    printf("(7)\tExit\n\n\t\t");
    scanf("%d",&c);
    switch(c)
    {
         case 1:
        add();
        break;
     case 2:
    multiple_add();
    break;
     case 3:
    disp();
    break;
     case 4:
    search();
    break;
     case 5:
    del();
    break;
     case 6:
    update();
    break;
     case 7:
    exit(0);
    break;
     default:
    printf("Wrong Choice...Please Try Again");
    main();

      }
    }
    void add()
    {
    FILE *fp;
    clrscr();
    fp = fopen("Record.csv","a");
    printf("\n\n\t\tEnter The Student ID: ");
    scanf("%d",&s.id);
    printf("\n\t\tEnter The Student Name: ");
    scanf("%s",&s.name);
    printf("\n\t\tEnter The Student Address: ");
    scanf("%s",&s.address);
    fwrite(&s, sizeof(s), 1, fp);
    fclose(fp);
    printf("\n\n\t\tData Added Sucessfully");
    strt();

    }

void disp()
{
    FILE *fp1;
    fp1 = fopen("Record.xlsx","r");
    clrscr();
    printf("\n\tRoll_No\t\tName\t\tAddress\n\n\n");
    while (fread(&s, sizeof(s), 1, fp1))
    {
        printf("\t%d\t\t%s\t\t%s\n",s.id,s.name,s.address);
    }
    fclose(fp1);
    strt();

}

void search()
{
    FILE *fp3;
    FILE *fp4;
    int r,q,avl;
    clrscr();
    printf("\n\n\t\tEnter The ID You Want To Search: ");
    scanf("%d",&r);

    fp3 = fopen("Record.xlsx","r");
    while (fread(&s, sizeof(s), 1, fp3))
    {
        q = s.id;
        if(q==r)
        {
            printf("\n\t\tID: %d",s.id);

            printf("\n\t\tName: %s",s.name);
            printf("\n\t\tAddress: %s",s.address);
        }
    }
    fclose(fp3);

}
void del()
{
FILE *fpo;
FILE *fpt;
int r,avl;
int x;
char c;
clrscr();
printf("\n\n\t\t\tEnter The ID You Want To Delete: ");
scanf("%d",&r);

    fpo=fopen("Record.xlsx","r");
    fpt=fopen("tempfile","w");
    while (fread(&s, sizeof(s), 1, fpo))
    {
        x = s.id;
        if(x!=r)
        {
            fwrite(&s, sizeof(s), 1, fpt);
        }
    }
    fclose(fpo);
    fclose(fpt);
    fpo=fopen("Record.xlsx","w");
    fpt=fopen("tempfile","r");
    while (fread(&s, sizeof(s), 1, fpt))
        fwrite(&s, sizeof(s), 1, fpo);
    printf("\n\n\t\tRecord Deleted Sucessfully.\n\tBYE");



 }

    void multiple_add()
    {
    int a,i=1;
    clrscr();
    printf("\n\n\t\tEnter The Number Of Students You Want To Add: ");
    scanf("%d",&a);
    while(i<=a)
{
    addn();
    i++;
}
strt();

}
void addn()
{
FILE *fp;
clrscr();
fp = fopen("Record.xlsx","a");
printf("\n\n\t\tEnter The Student ID: ");
scanf("%d",&s.id);
printf("\n\t\tEnter The Student Name: ");
scanf("%s",&s.name);
printf("\n\t\tEnter The Student Address: ");
scanf("%s",&s.address);
fwrite(&s, sizeof(s), 1, fp);
fclose(fp);
printf("\n\n\t\tData Added Sucessfully");
}
 void update()
    {
    FILE *fpt;
    FILE *fpo;
    int x,r,ch;
    clrscr();
    printf("Enter The ID Which You Want To Update: ");
    scanf("%d",&r);
    fpo = fopen("Record.xlsx","r");
    fpt = fopen("TempFile","w");
    while (fread(&s, sizeof(s), 1, fpo))
    {
        x = s.id;
        if(x!=r)
            fwrite(&s, sizeof(s), 1, fpt);
        else
        {
            printf("\n\n\t\t(1)\tUpdate Name Of ID %d.",r);
            printf("\n\n\t\t(2)\tUpdate Address Of ID %d.",r);
            printf("\n\n\t\t(3)\tUpdate Name and Address Of ID %d.",r);
            printf("Enter Your Choice: ");
            scanf("%d",&ch);
            switch(ch)
            {
            case 1:
                printf("Enter Name: ");
                scanf("%s",&s.name);
                break;
            case 2:
                printf("Enter Address: ");
                scanf("%s",&s.address);
                break;
            case 3:
                printf("Enter Name: ");
                scanf("%s",&s.name);
                printf("Enter Address: ");
                scanf("%s",&s.address);
                break;
            default:
                printf("Invalid Selection");
                break;
            }
            fwrite(&s, sizeof(s), 1, fpt);

        }
    }
    fclose(fpo);
    fclose(fpt);
    fpo = fopen("Record.xlsx","w");
    fpt = fopen("TempFile","r");
    while (fread(&s, sizeof(s), 1, fpt))
    {
    fwrite(&s, sizeof(s), 1, fpo);
    }
    fclose(fpo);
    fclose(fpt);
    printf("\n\n\t\tRECORD UPDATED\n");

    }