c解析excel文件(c语言操作excel文件(读写))

157 2022-10-07 13:55

1. c语言操作excel文件(读写)

C语⾔读取excel⽂件

步骤

1. 将Excel⽂件另存为*.csv⽂件(是和txt⼀样,以⼆进制⽂本形式存储,它是以都逗号分隔符做个单元格内容的划分),这⾥要特别注意在

另存为时,会有两个关于csv的选项,如果需要在C语⾔中,读取中⽂,需要选择 CSV(逗号风格)(*.csv)。CSV UTF-8格式,在C 语⾔中中⽂会出现乱码。

2. 在C语⾔中使⽤FILE,读取数据。将表格数据存⼊数组中。细节见代码注释:

#define maxFactorNumber 128 //最⼤因素个数

//这⾥需要存储字符串的值到数组,所以不能写成typedef char * Matrix[maxYSNumber][maxYSNumber];

//否则只能保存引⽤。⼀旦被引⽤的字符串发⽣变化,就会产⽣意想不到的结果。


2. c语言读excel文件内容

1、要使用C语言进行Excel文件的读取,要用到专门的函数,并使用指针做内存位移操作;

2、在执行读取Excel文件的操作时,需要使用函数有:

fopen: 此函数用来打开指定的文件,返回文件指针

fseek:这个函数主要用来进行文件随机定位,通过定位,读取指定位置的数据

fscanf:用来从指定位置获取数据

fclose:用来将打开的文件关闭

3、fseek函数的一般调用格式如下:fseek(文件指针,位移量,起始位置) ;

其中参数位移量,是指重新定位时的字节偏移数,表示相对于基址的字符数,通常是一个长整型数,可以是整形常量,整形表达式等。

4、对于fseek函数的起始位置参数,是指重新定位时的基准点,也就是基址,用整数或符合常量表示,包括:

0:符号常量为SEEK_SET,表示文件开头

1:符号常量为SEEK_CUR,表示文件指针的当前位置

2:符号常量为SEEK_END,表示文件末尾

函数使用如下例: fseek(fp , 10L , 0) ;


3. c语言读取excel单元格内容

不对如果B1:B3三个单元格都有数值,就是等价的如果B1:B3中有一个是空单元格则average函数,只计算非空单元格的平均值,但后面这个公式会连同空单元格一起算平均,值就不同了如果其中有个单元格是文本,average 仍可避开文本计算平均值但公式不能,会出错


4. c语言从excel读文件

1、matlab读取Excel文件的命令为xlsread,xlsread的调用格式为xlsread('文件路径\文件名称'),此处以文件shuju.xlsx为例,文件路径和文件名称如下图所示。

2、在matlab命令行输入命令A=xlsread('C:\Users\50123\Desktop\shuju.xlsx'),即可把Excel中的数据保存在A中。输出结果如下图所示,和Excel中的数据一致。

3、读取指定的工作表:xlsread命令未指定工作表时,默认读取Sheet1中的数据,A=xlsread('文件路径\文件名称','工作表名称'),即可读取指定的工作表。

4、使用A=xlsread('C:\Users\50123\Desktop\shuju.xlsx','Sheet2')即可读取Sheet2工作表中的数据,结果如下图所示。

5、读取指定工作表的指定行列:调用格式为xlsread('文件路径\文件名称','工作表','行列范围'),行列范围以a1:c2为例,表示以a1为起始,c2为终点的矩阵。输入命令及输出结果如下图所示。


5. c语言读取excel数据

import jxl.*;

import jxl.format.UnderlineStyle;

import jxl.write.*;

import jxl.write.Number;

import jxl.write.Boolean;

import java.io.*;

class excel {

public excel() {

}

/**

* 读取excel

*

* @param filepath

*/

public static void readexcel(String filepath) {

try {

InputStream is = new FileInputStream(filepath);

Workbook rwb = Workbook.getWorkbook(is);

// sheet st = rwb.getsheet("0")这里有两种方法获取sheet表,1为名字,2为下标,从0开始

Sheet st = rwb.getSheet(0);

Cell c00 = st.getCell(1, 0);

// 通用的获取cell值的方式,返回字符串

String strc00 = c00.getContents();

// 获得cell具体类型值的方式

if (c00.getType() == CellType.LABEL) {

LabelCell labelc00 = (LabelCell) c00;

strc00 = labelc00.getString();

}

// 输出

System.out.println(strc00);

// 关闭

rwb.close();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 输出excel

*

* @param os

*/

public static void writeexcel(OutputStream os) {

try {

/**

* 只能通过api提供的工厂方法来创建workbook,而不能使用WritableWorkbook的构造函数,

* 因为类WritableWorkbook的构造函数为protected类型

* method(1)直接从目标文件中读取WritableWorkbook wwb =

* workbook.createWorkbook(new file(targetfile)); method(2)如下实例所示

* 将WritableWorkbook直接写入到输出流

*

*/

WritableWorkbook wwb = Workbook.createWorkbook(os);

// 创建excel工作表 指定名称和位置

WritableSheet ws = wwb.createSheet("test sheet 1", 0);

WritableSheet ws2 = wwb.createSheet("test sheet 2", 1);

// **************往工作表中添加数据*****************

// 1.添加label对象

Label label = new Label(0, 0, "this is a label test");

ws.addCell(label);

Label label2 = new Label(0, 0, "this is a label test2");

ws2.addCell(label2);

// 添加带有字型formatting对象

WritableFont wf = new WritableFont(WritableFont.TIMES, 18,

WritableFont.BOLD, true);

WritableCellFormat wcf = new WritableCellFormat(wf);

Label labelcf = new Label(1, 0, "this is a label test", wcf);

ws.addCell(labelcf);

// 添加带有字体颜色的formatting对象

WritableFont wfc = new WritableFont(WritableFont.ARIAL, 10,

WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,

jxl.format.Colour.RED);

WritableCellFormat wcffc = new WritableCellFormat(wfc);

Label Labelcf = new Label(1, 0, "this is a Label cell", wcffc);

ws.addCell(Labelcf);

// 2.添加number对象

Number Labeln = new Number(0, 1, 3.1415926);

ws.addCell(Labeln);

// 添加带有formatting的number对象

NumberFormat nf = new NumberFormat("#.##");

WritableCellFormat wcfn = new WritableCellFormat(nf);

Number Labelnf = new jxl.write.Number(1, 1, 3.1415926, wcfn);

ws.addCell(Labelnf);

// 3.添加boolean对象

Boolean Labelb = new jxl.write.Boolean(0, 2, false);

ws.addCell(Labelb);

// 4.添加datetime对象

jxl.write.DateTime Labeldt = new jxl.write.DateTime(0, 3,

new java.util.Date());

ws.addCell(Labeldt);

// 添加带有formatting的dateformat对象

DateFormat df = new DateFormat("dd mm yyyy hh:mm:ss");

WritableCellFormat wcfdf = new WritableCellFormat(df);

DateTime Labeldtf = new DateTime(1, 3, new java.util.Date(), wcfdf);

ws.addCell(Labeldtf);

// 添加图片对象,jxl只支持png格式图片

// File image = new File("f:\\2.png");

// WritableImage wimage = new WritableImage(0,1,2,2,image);

// ws.addImage(wimage);

// 写入工作表

wwb.write();

wwb.close();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 拷贝后,进行修改,其中File1为被copy对象,File2为修改后创建的对象

* 尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去, 以使单元格的内容以不同的形式表现

*

* @param File1

* @param File2

*/

public static void modifyexcel(File File1, File File2) {

try {

Workbook rwb = Workbook.getWorkbook(File1);

WritableWorkbook wwb = Workbook.createWorkbook(File2, rwb);// copy

WritableSheet ws = wwb.getSheet(0);

WritableCell wc = ws.getWritableCell(0, 0);

// 判断单元格的类型,做出相应的转换


6. c++读excel文件

excel的版本是2007用C++标准输出流输到excel中,如果没有回车,数据都在一个单元格中。希望能解决跳到同一行中的下一个单元格中。


7. c语言怎么读取excel文件

利用C代码调用Excel数据的重点在于找到相应的文件,然后在选择我们需要的打开方式,例如只读,写入等等,还有一个细节是在程序结束后记得关闭打开的文件,避免内存泄漏,这里需要用到文件指针的知识,具体操作如下:

1,首先打开我们的VS2015来编写C语言代码。新建一个test.xls来测试我们是否能够写入我们想要的数据到Excel表格里面,学会了如何写入,也就会如何读取了。


2,需要开始写入一个文件指针,用于到时候指向我们需要找到的Excel表格。


3,如:fp = fopen("C:\\Users\\dell-pc\\Desktop\\test.xls", "w");通过写入的方式打开指定地址的文件,若是要严谨一点还会有一个判断,判断是否文件打开成功,因为可能地址会填写错,或者文件不存在。


4,接下来就是加入测试代码,验证这种方式是否能够正真的对Excel内的数据进行操作,我们这里写入了“akeidn”和“123456”的数据,运行后,打开Excel表格观察。


5,打开后发现,内容已经成功写入了,这里用了一个for循环就可以写入了。


6,值的注意的是,运行这个代码是在后台打开文件,打开的文件并不会显示在桌面上。最后记得关闭我们打开的文件,避免内存泄漏。读取文件的话就将‘w’改成‘r’。


8. C语言读取excel

首先你要知道为什么电脑的硬盘符号要从字母C开始命名呢,因为在计算机刚诞生的时候,还没有硬盘,那时候储存数据主要靠软盘。而软盘驱动器按照顺序就占据了A和B的字母符号位置。而随后硬盘的发明和运动只能按照顺序重新开始命名作为盘符了。

一 C盘作为优先安装顺序的硬盘,肯定是作为系统盘来使用的。而C盘在电脑开机时也是最先读取,速度也是最快的。所以,对于软件开发商来说,自然是希望软件的运行速度越快越好,这样也能带给用户较好的使用体验,卸载的风险也就小一点

二 因为在Windows系统中只有C盘是固定命名的,其他的D盘、F盘的名字都是可以随意更改的,现在国内大部分电脑都是安装运行windows系统,然而安装windows系统的电脑就必须得要通过硬盘启动。也就是说,一台装有windows电脑的系统至少得有一块硬盘。为了避免安装错误,程序就默认安装在C盘中。

三 软件开发人的习惯,当初最早研究所的研究员在设计时就规定好了硬盘,导致之后的许多程序员在编写软件时也必须按照以往的安装位置来编写,长久以来,也没有人提出质疑,也比较符合老板的想法,自然而然就固定了下来。 大家应该明白了吗?但是在这里提醒大家,不要一股脑的把所有应用都安装在C盘,C盘应用程序过多的话,也会影响系统的流畅运行,所以如果不是特别必要的软件,尽量安装在其他的硬盘中,养成一个使用电脑的良好习惯。


9. 如何用c语言读取excel文件里的数据

简单的方法是通过ODBC来实现: 具体实现

一、 包含Excel文件操作类头文件 #include "CSpreadSheet.h"

二、 新建Excel文件,并写入默认数据 // 新建Excel文件名及路径,TestSheet为内部表名 CSpreadSheet SS("c:\\Test.xls", "


10. c#读写excel文件内容

//引用Excel命名空间 using Excel; //...... //下面从test.xls中的2,2格复制图片到剪贴板,然后从剪贴板读取图片并显示到pictureBox1中。

private void btnGetImageFromExcel_Click(object sender, EventArgs e) { //初始化excel对象 Excel.Appl...


顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片