| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4003 人关注过本帖
标题:怎样在***.dat文件中提取数据,计算后保存到excel文件中。
只看楼主 加入收藏
water2000
Rank: 1
等 级:新手上路
帖 子:9
专家分:3
注 册:2011-5-29
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:9 
怎样在***.dat文件中提取数据,计算后保存到excel文件中。
现有很多"***.dat"格式的文件,如附件:2.dat。要求挑选一部分数据进行计算,将计算后的结果保存在excel格式的文件中。其具体计算如下:计算并不复杂,只是叙述起来麻烦。
NO:1中的“内一”“上”“LX1”和“内二”“上”“LX1”加起来乘上1.5得到的结果为PX,即PX=(23+90)×1.5=169.5
NO:1中的“内一”“上”“LY1”和“内二”“上”“LY1”加起来乘上1.5得到的结果为PY,即PY=(4556+345)×1.5=7351.5
NO:1中的“内一”“上”“LZ1”和“内二”“上”“LZ1”加起来乘上1.5得到的结果为PZ,即PZ=(324+65)×1.5=583.5
NO:1中的“内一”“上”“JX1”和“内二”“上”“JX1”加起来乘上1.5得到的结果为MX,即MX=(23+23)×1.5=69
NO:1中的“内一”“上”“JY1”和“内二”“上”“JY1”加起来减去”内一”“上”“LZ1”乘上569/1000的结果再乘上1.5得到的结果为MY,即MY=(24+783-324×569/1000)×1.5=933.966
NO:1中的“内一”“上”“JZ1”和“内二”“上”“JZ1”加起来加上”内一”“上”“LY1”乘上569/1000的结果再乘上1.5得到的结果为MZ,即MZ=(-96+234+4556×569/1000)×1.5=4302.546
将NO:1,NO:3,NO:7,NO:8,等等NO:n都这样计算一遍保存到excel中输出来,NO:后的数据没有规律,保存格式如“2.xls”在附件中。

50分,不胜感激!
附件.rar (2.28 KB)
搜索更多相关主题的帖子: excel dat文件 
2011-06-03 22:12
tdy1006
Rank: 4
等 级:业余侠客
帖 子:173
专家分:240
注 册:2009-5-13
收藏
得分:0 
这个有点复杂哈。建议可以先写成XML。再用EXCEL读取XML。另存

[ 本帖最后由 tdy1006 于 2011-6-3 23:12 编辑 ]
2011-06-03 23:10
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
楼上的方法是对的。你也可以考虑保存成CSV格式,这样EXCEL就能直接打开了
CSV格式如下

行1列1, 行1列2
行2列1, 行2列2

如此简单

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2011-06-04 07:34
w123012306
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:蜘蛛侠
威 望:4
帖 子:307
专家分:1180
注 册:2010-4-22
收藏
得分:0 
其实我也想学C

楼上,楼下的一定要幸福开心哦!
2011-06-04 08:34
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
楼上的头像是诛仙的吧?

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2011-06-04 11:03
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
如果要保存记事本我可以帮你弄 Excel是在无能为力

                                         
===========深入<----------------->浅出============
2011-06-04 11:10
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
老杨怎么换了头像

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2011-06-04 11:14
water2000
Rank: 1
等 级:新手上路
帖 子:9
专家分:3
注 册:2011-5-29
收藏
得分:0 
回复 6楼 laoyang103
保存成记事本也行,按照一定的格式输出都行。谢谢了!
2011-06-04 14:56
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:50 
程序代码:
#include<Stdio.h>
#include <string.h>

#define LEN strlen("    LX1    LY1    LZ1    JX1    JY1    JZ1")
#define FORMATOUT "%s %-5.1f %-5.1f %-5.1f %-5.1f %-5.1f %-5.1f"
#define FORMATIN "%s %f %f %f %f %f %f"
struct Matix
{
    char nei[10];
    char dec[3];
    float msg[3][6];
};

struct MSG
{
    char NO[10];
    Matix m[2];
    float res[6];
};
void main()
{
    MSG msg[4] = {0};
    FILE *fp = fopen("2.dat","r");
    int i,j,k;
    for(i = 0;i<4;i++)
    {
        fscanf(fp,"%s",msg[i].NO);
        printf("\n%s\n",msg[i].NO);
        for(j = 0;j<2;j++)
        {
            fscanf(fp,"%s",msg[i].m[j].nei);
            char buffer[50] = {0};
            fseek(fp,LEN+8,SEEK_CUR);
            for(k = 0;k<3;k++)
            {
                fscanf(fp,FORMATIN,msg[i].m[j].dec,&msg[i].m[j].msg[k][0],
                    &msg[i].m[j].msg[k][1],&msg[i].m[j].msg[k][2],
                    &msg[i].m[j].msg[k][3],&msg[i].m[j].msg[k][4],
                    &msg[i].m[j].msg[k][5]);
                printf(FORMATOUT,msg[i].m[j].dec,msg[i].m[j].msg[k][0],
                    msg[i].m[j].msg[k][1],msg[i].m[j].msg[k][2],
                    msg[i].m[j].msg[k][3],msg[i].m[j].msg[k][4],
                    msg[i].m[j].msg[k][5]);
                printf("\n");
            }
            printf("\n");
        }
        int x,y,z;
        printf("Res: ");
        for(x = 0;x<6;x++)
        {
            msg[i].res[x] = (msg[i].m[0].msg[0][x] + msg[i].m[1].msg[0][x]) * 1.5;
            printf("%-5.1f ",msg[i].res[x]);
        }
    }
    fclose(fp);


    fp = fopen("temp.txt","w");
    for(i = 0;i<4;i++)
    {
        fprintf(fp,"\n%s\n",msg[i].NO);
        for(j = 0;j<2;j++)
        {
            for(k = 0;k<3;k++)
            {
                fprintf(fp,FORMATOUT,msg[i].m[j].dec,msg[i].m[j].msg[k][0],
                    msg[i].m[j].msg[k][1],msg[i].m[j].msg[k][2],
                    msg[i].m[j].msg[k][3],msg[i].m[j].msg[k][4],
                    msg[i].m[j].msg[k][5]);
                fprintf(fp,"\n");
            }
            fprintf(fp,"\n");
        }
        int x,y,z;
        fprintf(fp,"Res: ");
        for(x = 0;x<6;x++)
        {
            msg[i].res[x] = (msg[i].m[0].msg[0][x] + msg[i].m[1].msg[0][x]) * 1.5;
            fprintf(fp,"%-5.1f ",msg[i].res[x]);
        }
    }
    fclose(fp);
}
图片附件: 游客没有浏览图片的权限,请 登录注册

                                         
===========深入<----------------->浅出============
2011-06-04 18:05
water2000
Rank: 1
等 级:新手上路
帖 子:9
专家分:3
注 册:2011-5-29
收藏
得分:0 
回复 9楼 laoyang103
我把你编的源代码运行了,得不到你给的图片结果啊。
我得的结果是这样的。方便加了,我的Q 94682569
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 water2000 于 2011-6-5 21:55 编辑 ]
2011-06-05 21:52
快速回复:怎样在***.dat文件中提取数据,计算后保存到excel文件中。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023165 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved