C语言编程将EXCEL里的数据导出来修改

kuloudianxia 2011-01-19 09:06:42
如何用C语言编程将EXCEL里的数据导出修改,然后再导回EXCEL文件里
以下是我的程序,导出来后总是乱码

#include"stdio.h"
#include<stdlib.h>
#define N 1
struct hang
{
long id;
double mianji;
double zhouchang;
char FEATUREID[26];
char CHFCAC[6];
char HXDD[6];
long double HXGAKA;
long double HXGAKB;
char neixing[10];
char xingtai[16];
char chuangzhuang[8];
double chang;
double kuan;
double jiamian;
double jiazhou;
long RegNo;
long id0;
double mianji0;
double zhouchang0;
char FEATUREID0[26];
char CHFCAC0[6];
char neixing0[8];
char xingtai0[16];
char chuangzhuang0[8];
double chang0;
double kuan0;
float WTCEBQ;
float WTCEBR;
};
void main()
{
FILE*fp,*op;
struct hang ha[N];
int i;long j;
fp=fopen("C://Documents and Settings//Administrator//桌面//1.xls","r");
op=fopen("C://Documents and Settings//Administrator//桌面//out.xls","w");
if(fp==NULL)
{
printf("can't open file\n");
exit(0);
}
if(op==NULL)
{
printf("can't write file\n");
exit(0);
}for(i=0;i<N;i++){fscanf(fp+4*i,"%ld",&j);if(j==5)printf("%d\t成功",i);}
for(i=0;i<N;i++)
{
fscanf(fp,"%ld%lf%lf%s%s%s%lf%lf\t%lf\t",&ha[i].id,&ha[i].mianji,&ha[i].zhouchang,ha[i].FEATUREID,ha[i].CHFCAC,ha[i].HXDD,&ha[i].HXGAKA,&ha[i].HXGAKB);
fscanf(fp,"%s\t%s\t%s\t%lf\t%lf\t%lf\t%lf\t%ld\t%ld\t%lf\t",ha[i].neixing,ha[i].xingtai,ha[i].chuangzhuang,&ha[i].chang,&ha[i].kuan,&ha[i].jiamian,&ha[i].jiazhou,&ha[i].RegNo,&ha[i].id0,&ha[i].mianji0);
fscanf(fp,"%lf\t%s\t%s\t%s\t%s\t%s\t",&ha[i].zhouchang0,ha[i].FEATUREID0,ha[i].CHFCAC0,ha[i].neixing0,ha[i].xingtai0,ha[i].chuangzhuang0);
fscanf(fp,"%lf\t%lf\t%f\t%f\n",&ha[i].chang0,&ha[i].kuan0,&ha[i].WTCEBQ,&ha[i].WTCEBR);
printf("%ld,%lf,%lf,%s,%s,%s",ha[i].id,ha[i].mianji,ha[i].zhouchang,ha[i].FEATUREID,ha[i].CHFCAC,ha[i].HXDD);
printf("%lf,%lf",ha[i].HXGAKA,ha[i].HXGAKB);
printf("%s,%s,%s,%lf,%lf,%lf,%lf,%ld,%ld,%lf",ha[i].neixing,ha[i].xingtai,ha[i].chuangzhuang,ha[i].chang,ha[i].kuan,ha[i].jiamian,ha[i].jiazhou,ha[i].RegNo,ha[i].id0,ha[i].mianji0);
printf("%lf,%s,%s,%s,%s,%s,%lf",ha[i].zhouchang0,ha[i].FEATUREID0,ha[i].CHFCAC0,ha[i].neixing0,ha[i].xingtai0,ha[i].chuangzhuang0,ha[i].chang0);
printf("%lf,%f,%f\n",ha[i].kuan0,ha[i].WTCEBQ,ha[i].WTCEBR);printf("%d",i);
}
fclose(fp);
for(i=0;i<N;i++)
{
fprintf(op,"%ld\t%lf\t%lf\t%s\t%s\t%s\t",ha[i].id,ha[i].mianji,ha[i].zhouchang,ha[i].FEATUREID,ha[i].CHFCAC,ha[i].HXDD);
fprintf(op,"%\tlf\t%lf\t",ha[i].HXGAKA,ha[i].HXGAKB);
fprintf(op,"%s\t%s\t%s\t%lf\t%lf\t%lf\t%lf\t%ld\t%ld\t%lf\t",ha[i].neixing,ha[i].xingtai,ha[i].chuangzhuang,ha[i].chang,ha[i].kuan,ha[i].jiamian,ha[i].jiazhou,ha[i].RegNo,ha[i].id0,ha[i].mianji0);
fprintf(op,"%lf\t%s\t%s\t%s\t%s\t%s\t%lf\t",ha[i].zhouchang0,ha[i].FEATUREID0,ha[i].CHFCAC0,ha[i].neixing0,ha[i].xingtai0,ha[i].chuangzhuang0,ha[i].chang0);
fprintf(op,"%lf\t%f\t%f\n",ha[i].kuan0,ha[i].WTCEBQ,ha[i].WTCEBR);
fclose(op);
}
return;
}
请问正确的的步骤是怎么的,具体要调用哪些API函数。
...全文
877 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjc0221 2013-07-06
  • 打赏
  • 举报
回复
楼主可不可以给我发一份,学习一下,万分感谢 1036577175@qq.com
kuloudianxia 2011-03-30
  • 打赏
  • 举报
回复
感谢大家勇跃的发贴指导我,不过我已经解决了。只需通过ODBC就可以用MFC操作EXCEL了
afxdb.h
odbcinst.h
ganweiyi1994 2011-03-30
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/office/ExcelFormat.aspx
这里有介绍
kuloudianxia 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 weerweer 的回复:]
lz 牛人。不过连个自己的库都没有,就更牛了。

这种操作很麻烦的,当初想用perl试试的,结果发现效果不好,字符集的问题没解决。
最后还是用excel的vba解决。
[/Quote]
用MFC也可以,通过ODBC,也很简单
kuloudianxia 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 weerweer 的回复:]
lz 牛人。不过连个自己的库都没有,就更牛了。

这种操作很麻烦的,当初想用perl试试的,结果发现效果不好,字符集的问题没解决。
最后还是用excel的vba解决。
[/Quote]
你错了,我已经学会了,只需要一天就可以了
shadowlsj 2011-01-22
  • 打赏
  • 举报
回复
。。。还要导回去。。。。。

厉害啊。。。

在下导出excel的文本文件都直接另存为unicode.txt。

你要遇到那种并非标准格式,比如EXCEL里有各种的分栏各种的修饰可怎么办呀。。。。
super_admi 2011-01-22
  • 打赏
  • 举报
回复
很少有见到自己手动解析OFFICE文档的。

在读写OFFICE文档的时候,如果是C或者C++,多半是用的是OFFICE的COM接口。不用怀疑,虽然我只用过WORD的COM接口,但EXCEL肯定有。
McFlycobe 2011-01-22
  • 打赏
  • 举报
回复
阿弥陀佛,看来楼主有麻烦了
jianwei824 2011-01-22
  • 打赏
  • 举报
回复
是不能按照一般的文件进行读写的,需要调用微软的接口才可以的
lengxujun 2011-01-22
  • 打赏
  • 举报
回复
自己直接去弄,恐怕不是一时半会儿的事.
到这里去看看:
http://www.codeproject.com/KB/office/ExcelFormat.aspx
weerweer 2011-01-20
  • 打赏
  • 举报
回复
lz 牛人。不过连个自己的库都没有,就更牛了。

这种操作很麻烦的,当初想用perl试试的,结果发现效果不好,字符集的问题没解决。
最后还是用excel的vba解决。
NowDoIT 2011-01-20
  • 打赏
  • 举报
回复
楼主开玩笑了,我做过excel的解析;

这个是微软定义的一套格式东西,你先去百度下excel格式在看看怎么解析吧!

总之,巨麻烦。用读txt文本肯定是不行的。
ischarles 2011-01-20
  • 打赏
  • 举报
回复
两种选择:
1 阅读openoffice解析EXCEL文件的源代码,这里有文档:http://sc.openoffice.org/excelfileformat.pdf
2 将Excel转换为CSV格式再解析

考虑到Excel格式比较复杂,
如果楼主有足够的时间(如1,2个月),那么可以用方法一
如果楼主想尽快做完(1,2天),建议使用方法二
ningto.com 2011-01-19
  • 打赏
  • 举报
回复
这样不行, 肯定要用到excel里的函数
ayw215 2011-01-19
  • 打赏
  • 举报
回复
昏。。。excel文件有自己的格式,你直接这样读是读文本文件,对excel不适用。。。
用com来读写excel吧

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧