-
2020-04-22 14:36:21
步骤
- 将Excel文件另存为*.csv文件(是和txt一样,以二进制文本形式存储,它是以都逗号分隔符做个单元格内容的划分),这里要特别注意在另存为时,会有两个关于csv的选项,如果需要在C语言中,读取中文,需要选择 CSV(逗号风格)(*.csv)。CSV UTF-8格式,在C语言中中文会出现乱码。
- 在C语言中使用FILE,读取数据。将表格数据存入数组中。细节见代码注释:
#define maxFactorNumber 128 //最大因素个数 //这里需要存储字符串的值到数组,所以不能写成typedef char * Matrix[maxYSNumber][maxYSNumber]; //否则只能保存引用。一旦被引用的字符串发生变化,就会产生意想不到的结果。 typedef char Matrix[maxFactorNumber][maxFactorNumber][128]; //从cvs文件中读取矩阵信息 void readMatrix(char * filePath,Matrix m)//读取文件内容到矩阵m { FILE *fp = NULL; char *line,*record; char buffer[1024]; int x=0,y=0,n=0; if ((fp=fopen(filePath,"r")) != NULL) { char delims[] = ","; wchar_t *result = NULL; while (line = fgets(buffer, sizeof(buffer), fp))//当没有读取到文件末尾时循环继续 { line[strlen(line)-1]='\0';//去除\r\n,无法通过查找\r或\n来处理,但确实先执行\r,将光标移动到第一个字符钱,然后往下一行。可能vc2010对回车的解释看做一个字符? record = strtok(line, ","); while (record)//读取每一行的数据 { memcpy(m[x][y],record,128);//考虑到小数点以及结束符,使用128,而不要用sizeof。 record = strtok(NULL, ","); y++; } y=0; x++; } fclose(fp); fp = NULL; } }
更多相关内容 - 将Excel文件另存为*.csv文件(是和txt一样,以二进制文本形式存储,它是以都逗号分隔符做个单元格内容的划分),这里要特别注意在另存为时,会有两个关于csv的选项,如果需要在C语言中,读取中文,需要选择 CSV(逗号风格)(*.csv)。CSV UTF-8格式,在C语言中中文会出现乱码。
-
C语言读取Excel文件
2020-03-03 14:29:59C语言要读取xls/xlsx格式文件比较复杂,可以先把xls/xlsx格式另存为csv格式。 比如文件"i.csv"内容如下: csv格式采用逗号分隔符,用记事本打开可以看到: 用 fscanf 读取字符串时,注意指定字符串的格式,要...C语言要读取xls/xlsx格式文件比较复杂,可以先把xls/xlsx格式另存为csv格式。
比如文件"i.csv"内容如下:
csv格式采用逗号分隔符,用记事本打开可以看到:
用 fscanf 读取字符串时,注意指定字符串的格式,要用逗号和\n作为分隔符。
(scanf/fscanf等函数指定字符串格式的方法:点击)
代码:
#include <stdio.h> int main(){ char filename[] = "i.csv"; char table[2][3][40]; FILE* fp = fopen(filename,"r"); // fp指向文件头部 for(int i = 0 ; i < 2 ; i++) for(int j = 0 ; j < 3 ; j++){ fscanf(fp,"%[^,\n]",table[i][j]); // 读到逗号或\n为止 fgetc(fp); // 读取一个字符(逗号或\n) } for(int i = 0 ; i < 2 ; i++){ for(int j = 0 ; j < 3 ; j++) printf("%-20s",table[i][j]); // -20:左对齐,占20个字符宽度 printf("\n"); } fclose(fp); return 0; }
运行结果:
-
C语言操作Excel表格
2021-05-21 13:58:16上网查找了好多的资料发现C语言不能操作Execl表格,说是比较用C++语言好操作,想了解更多请点此链接:C++操作Excel表格。接下来介绍下一位学长介绍给我的方法,比较粗俗,但还是挺实用的。第一步:先实用C语言创建*....上网查找了好多的资料发现C语言不能操作Execl表格,说是比较用C++语言好操作,想了解更多请点此链接:C++操作Excel表格。
接下来介绍下一位学长介绍给我的方法,比较粗俗,但还是挺实用的。
第一步:先实用C语言创建*.xls的后缀文件,之后把这个文件当做普通的txt文件打开来操作。
第二步:对表格的处理,使用C语言打开表格后,文件指针指向整个表格的第1行第1列。假如想给它的同行的下一个单元(第1行第2列)写数据,使用"\t";假如想给它的下一行同列(第2行第1列)写数据,使用“\n”。
具体的示例如下代码:
#include
void writeExcel(void ) {
FILE *fp = NULL;
int t;
char ch;
fp = fopen("F:\\test.xls", "w");
for (int i = 0; i < 10; i++) {
printf("please input:");
scanf("%d %c", &t, &ch);
fprintf(fp, "%d\t%c\n", t, ch);
}
fclose(fp);
}
int main() {
writeExcel();
return 0;
}
输入数据:
运行结果:
表格里的数据:
c语言或者php按writeExcel()函数来操作的,建议在使用标准输入前,先把输入缓存区清空,免得得到的结果不是期望的,清空办法如此:setbuf(stdin,NUL); 还有其他方法,建议大家多去网站搜去,且自己亲自试验。
假如把上边的文件名F:\\test.xls 改成F:\\test.csv 的话,此时等数据写完,可以单击右键使用”写字板“的方法打开,打开得到按行("\n")分割,每行里每个单元格是按逗号(”,“)分割的。示例如下:
c语言操作csv.csv 的表格使用默认方式为wps或Excel打开,内容如下:
c语言操作csv.csv 的表格使用写字板的方式打开,内容如下:
通过这么一对比,其实它csv里边就是这么存储的.故可以这么推测理解Excel表格里的格式(个人见解,仅供学习参考)。
最近学习了php语言,面向对象的语言还是牛,有直接操作表格的函数,或者是类。建议学习一下php直接操作表格csv格式,这种方式比较通用。(链接:php操作csv表格)
-
c语言读取csv表格做出数据分析.c
2020-07-18 11:38:47c语言读取csv,并对数据做出分析。本次项目主要针对的是对于疫情期间,同学们的体温数据csv的读取,并且对于其中的数据做出分析,判断体温大于37摄氏度的同学,并输出他们的信息。 -
c语言读写excel文档
2018-05-07 16:55:06简单的读写excel文档中内容的演示程序,使用vs2005开发的。 -
如何用c语言读取excel文件
2016-02-18 03:36:04请问各路大神,如何用c语言读取excel文件中的内容,急、、、、、、 -
c语言读取表格数据(优化版)
2019-11-12 16:18:07将excel表格信息导入程序中进行处理,通用性增强任务
将excel表格信息导入程序中进行处理,通用性增强
所需
- c语言运行平台
- 数据表格 ,格式如下图
步骤
#define FILENAME "grade.csv" #define TITLE1 "姓名" #define TITLE2 "学号" #define TITLE3 "成绩" #define TITLE4 ""
#define HEADERMAXLEN 100 //表头最大字符总长 #define TITLEMAXLEN 100 //单个标题最大字符长度 #define TITLEMAXNUM 20 //标题最大数量 #define DATAMAXLEN 100 //数据最大字符总长
1.读入表头
FILE* fp; fp = fopen(FILENAME, "r"); char* pHeader; char* pTitle; int colNum = 0;//记录表格数据列数 int* data2col;//记录需要的数据所在列 char csvHeader[HEADERMAXLEN]; char title[TITLEMAXNUM][TITLEMAXLEN]; char lineData[TITLEMAXNUM][DATAMAXLEN]; int readAll = 0;//判断是否到文件结尾 //读入表头信息 fscanf(fp, "%s", &csvHeader); //分割表头各个标题 for (pHeader = csvHeader; *pHeader != '\0'; pHeader++) { colNum++; pTitle = title[colNum]; while (*pHeader != ',' && *pHeader != '\0') { *pTitle++ = *pHeader++; } *pTitle = '\0'; if (*pHeader == '\0') break; } //优化有误,不可随意清除行数 /* for (int i = colNum; i > 0; i--) { if (*title[i] == '\0') colNum--; else { for (int i = 1; i <= colNum; i++) //cout << "第" << i << "列:" << title[i] << endl; break; } } */
优化内容:
将空列清除
知识归纳:
字符串判空屡次失败,最终采用:*title[i] == '\0'
- 字符串判定内容相同用函数strcmp(),用=
=只比较数组地址 - 空字符串为"",空字符为’\0’
但结果运行错误,反应过来:不可随意清除空列,由于这是csv格式,故行列关系固定,不可因标题改变而改变下面内容,故取消清除空列,还原版本
- 定位所需数据
//标记数组置零 data2col = (int*)malloc(sizeof(int) * (TITLENUM +1)); for (int i = 1; i <= TITLENUM; i++) { data2col[i] = 0; } //找到所需数据对应列 for (int i = 1; i <= colNum; i++) { if (strcmp(title[i], TITLE1) == 0) data2col[1] = i; if (strcmp(title[i], TITLE1) == 0) data2col[2] = i; if (strcmp(title[i], TITLE1) == 0) data2col[3] = i; if (strcmp(title[i], TITLE1) == 0) data2col[4] = i; }
- 读入所需数据
while (readAll == 0) { //读入数据 for (int i = 1; i <= colNum; i++) { if (readCell(fp, lineData[i]) == 0) { readAll = 1; break; } } //可更改增加退出数据读入灵活性 for (int i = 1; i <= TITLENUM; i++) { if (data2col[i]&&isEmpty(lineData[i])) readAll = 1; } //记录读入数据 for (int i = 1; i <= colNum; i++) { if (i == data2col[1]) cout << TITLE1 << ": " << lineData[i] << " "; if (i == data2col[2]) cout << TITLE2 << ": " << lineData[i] << " "; if (i == data2col[3]) cout << TITLE3 << ": " << lineData[i] << " "; if (i == data2col[4]) cout << TITLE4 << ": " << lineData[i] << " "; } cout << endl; }
1.字符串判空函数
/**************************************** Function:判定字符串是否为空 Input:字符串 output:无 return:为空返回1,否则返回0 ****************************************/ int isEmpty(char* s) { if (strcmp(s, "") == 0) return 1; else return 0; }
2.读入一单元格内容函数
/**************************************** Function:读入一单元格内容 Input:数据所在文件 output:单元格内容 return:读入数据返回1,读至文件末尾返回0 ****************************************/ int readCell(FILE* fp, char* s) { char temp[DATAMAXLEN],ch; char *pTemp=temp; if(!feof(fp)) if ((ch = fgetc(fp)) == '\n') { ; } else if (ch == ',') { strcpy(s, "\0"); return 1; } else *pTemp++ = ch; while (!feof(fp)&&(ch = fgetc(fp)) != ',' && ch != '\n') { *pTemp++ = ch; } if (feof(fp)) return 0; *pTemp = '\0'; strcpy(s, temp); return 1; }
结果验证
写在后面
基本具有可应用性,如有调整,后期在此基础上进行补充即可
-
C语言操作EXCEL文件(读写)
2021-05-20 01:16:39C语言操作EXCEL文件(读写)本文主要介绍通过纯C语言进行EXCEL的读写操作:(修改时间2018.08.28,如果运行结果均是0,请看文章最后一节)C语言读操作C语言写操作在之前需要使用C语言读取Excel文件内容的功能,查阅了很... -
C语言操作excel表格-链表实现
2021-05-21 13:59:12之前写过类似的文章:https://blog.csdn.net/morixinguan/article/details/83309576关于文件操作,特别是从后往前读取,要是像上面这篇文章一样去操作,那效率明显就太低了,如果一旦数据一多,很难处理。... -
读取excel表格到数组 js遍历表格,内容读取到数组
2021-05-22 13:13:10怎么把数组里面的数字粘贴(转入)到excel表格中python 如何读取excel文件 将每一行存为数组c#中如何把Excel数据存入数组?Excel.Application exl = new Excel.Application(); Excel.Workbooks wo先把Excel文件读到... -
c读取excel文件内容
2021-05-14 02:24:06如何用C语言实现读取excel文件中的数据呢?要做的是在Linux环境下使用C语言实现快速读取excel文件并保存成文本格式基本思路 基础实现方法同上篇文章《直接通过ODBC读、写Excel表格...C语言读取excel文件的数据现在... -
c语言实现把文件中数据读取并存到数组中
2020-08-31 21:25:26下面小编就为大家带来一篇c语言实现把文件中数据读取并存到数组中。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
c 与excel 表格数据-如何用C语言实现读取excel文件中的数据呢?
2021-05-14 02:25:30excel表格 怎么把C列的数据和A列的对等起来使用VLOOKUP函数公式即可。具体步骤:在C列插入两列在...C语言怎么操纵Excel表格Excel表格可以用TAB分隔的列,回车分隔的行的文本文件。因此,最简单的办法是输出以TA... -
excel数据读取并导出到数组里去
2022-06-17 08:46:58读取excel的数据且导出到数组里方便使用 -
c++读取excel表格并在控件中绘制曲线图等
2016-07-11 20:54:05c++读取excel表格并在控件中绘制曲线,通过命令可以读取excel表格中的数据,然后在teechart控件中可以绘制出一些曲线图,散点图,饼状图等等 -
利用c语言怎么实现excel电子表格里面数据的提取
2021-05-19 08:11:41匿名用户1级2008-03-21 回答简单的方法是通过ODBC来实现:具体实现一、 包含Excel文件操作类头文件#include "CSpreadSheet.h"二、 新建Excel文件,并写入默认数据// 新建Excel文件名及路径,TestSheet为内部表名... -
C#程序从Excel表格中读取数据并进行处理
2021-05-25 08:18:14今天做了一个Excel表格数据处理的事情,因为数据量表较大(接近7000条)所以处理起来有点麻烦,于是写了一个程序,先将程序记下以便将来查找。using System;using System.Collections.Generic;using System.Component... -
C++读取,修改excel表格数据,重命名excel表格
2022-06-13 15:05:39C++读取,修改excel表格数据,重命名excel表格 -
C#实现EXCEL数据到TXT文档的转换
2021-05-20 08:19:35C#数据转换前excel中的数据格式如下:设备名称 规格型号 设备编号 使用部门 固定资产编号电脑1 IBM5660 10001 管理部 100010001电脑2 IBM5661 10002 研发部 100010002电脑3 IBM5662 10003 管理部 100010003C#数据转换... -
c语言获取表格数据
2019-11-06 16:59:33虽然数据处理拥有多种便捷语言支持,但课设需要使用c语言实现,因此学习如何将excel表格信息导入程序中进行处理 -
c 将数据导出到excel表格!c语言读取txt文件数据,将数据导出至Excel或txt
2021-04-22 16:54:32怎么把C语言中产生的数据导入到Excel表格1和c说话产ascii文件应用空格做作为数隔符。2和进入excel选择数据选项卡/获取外部数据对象组/自文本按3和进入数据导入对话框在第一步中选择应用数据分隔符不选固定命据长度在... -
c 处理excel表格数据-如何用c语言实现图形界面输入,要求是用C做Excel表...
2021-06-30 01:02:07如何用c语言实现图形界面输入,要求是用C做Excel表...我你的意思,你的意思是:一个单元格中的计算结果,复制到的一个单元格中,只要那个...1、首先在excel表格中输入数据,在C列中有求和的计式,需C列的数据复制到... -
C++读写Excel的实现方法详解
2021-05-21 05:22:511.导入Excel类型库使用Visual C++的扩展指令#import导入Excel类型库:#import "C:\\Program Files\\Common Files\\microsoft shared\\OFFICE14\\MSO.DLL" \rename("RGB","MsoRGB") \rename("SearchPath",... -
问:如何实现C语言读取txt文件数据并处理,最后导出到excel文件当中,要求如下:
2022-04-12 16:46:58996:W:32:D:2013:09:29:P:1018:T:47:D: 2013:09:30:H:77:T:73:W:7: 以上是txt文件内容(要读取该文件) D是日期,H是湿度,P是压力,R是降雨量,T是温度,W是风速 (1) 从提供的数据文本文件中读取信息,然后 (2)... -
再见Ctrl + C!合并100个Excel表格,只需30秒!
2021-05-25 06:09:53合并100个Excel表格,只需30秒!哈喽,大家好!在上篇文章《 你复制粘贴的那么认真,难怪天天加班【Excel教程】 》中,我们给大家介绍了4种拆分工作表的方法,分别是函数、透视表、高级筛选、VBA,不知道小伙伴们... -
用C 怎么从excel表格中读取数据并进行简单的计算/python怎么读取excel
2020-11-29 03:51:41编写一个C#应用程序,读取一个Excel文件中单元格中的数据List employeeList = new List(); DataTable ExcelTable;string sExcelFile = @"E:\documents\data.xls";ExcelData excelData = new ExcelData();string ... -
C语言读取csv文件
2021-05-16 09:45:52C语言读取csv文件逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二...