c语言生成excel文件(c语言读取excel文件)

Excel表格网 2022-10-23 01:40 编辑:幸伦 204阅读

1. c语言读取excel文件

好像很难。Excel 一般都是手工操作,要用到 macro 就是高手了。用C++来扩展Excel,要写动态链接库,做接口。详细请参考资料。(英文的)pdf 格式。

2. C编程读取excel数据文件

C#里面有个专门读取Excel、Word的第三方库叫做NPOI,之前我拿它做过项目,这个库在开发企业应用上也有应用,而且容易上手,建议题主试试。传送门:

NPOI - Home

更加简单的方法就是安装Office / WPS后,引用它的dll,通过Excel/ET的API来实现读取。

3. 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);

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

4. c语言读取excel文件存到数组

在数据公式中,去重复的条件可以这样写 SMALL(IF(MATCH(C$2:C$200,C$2:C$200,0)=ROW($2:$200),ROW($2:$200),4^8),ROW(A1)) 取不重复唯一值的条件可以这样写 SMALL(IF(COUNTIF(C$2:C$200,C$2:C$200)=1,ROW($2:$200),4^8),ROW(A1))

5. c++读取excel文件

不知这样的效果如何?文件在附件,代码片段在下方:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

LPXLOPER Add(LPXLOPER x1,LPXLOPER x2)

{

if (x1->xltype==xltypeErr)

{

return x1;

}

if (x2->xltype==xltypeErr)

{

return x2;

}

static XLOPER xlRet={0};

double d1=0,d2=0;

if ((x1->xltype&xltypeNum)==xltypeNum)

{

d1=x1->val.num;

}else if ((x1->xltype&xltypeInt)==xltypeInt)

{

d1=x1->val.w;

}else if ((x1->xltype&xltypeSRef)==xltypeSRef)

{

if (GetNumFromCell(x1,d1)==false)

{

xlRet.val.err=xlerrValue;

xlRet.xltype=xltypeErr;

return (LPXLOPER)&xlRet;

}

}else

{

xlRet.val.err=xlerrValue;

xlRet.xltype=xltypeErr;

return (LPXLOPER)&xlRet;

}

if ((x2->xltype&xltypeNum)==xltypeNum)

{

d2=x2->val.num;

}else if ((x2->xltype&xltypeInt)==xltypeInt)

{

d2=x2->val.w;

}else if ((x2->xltype&xltypeSRef)==xltypeSRef)

{

if (GetNumFromCell(x2,d2)==false)

{

xlRet.val.err=xlerrValue;

xlRet.xltype=xltypeErr;

return (LPXLOPER)&xlRet;

}

}else

{

xlRet.val.err=xlerrValue;

xlRet.xltype=xltypeErr;

return (LPXLOPER)&xlRet;

}

xlRet.xltype=xltypeNum;

xlRet.val.num=d1+d2;

return (LPXLOPER)&xlRet;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

bool GetNumFromCell(LPXLOPER lpXloper,double & dValue)

{

XLOPER x_Tmp={0};

if ((lpXloper->xltype & xltypeSRef)==xltypeSRef)

{

if (xlretUncalced == Excel(xlCoerce, &x_Tmp, 2, lpXloper, TempInt(xltypeNum)))

{

return false;

}

if (x_Tmp.xltype==xltypeErr)

{

return false;

}

dValue=x_Tmp.val.num;

}else

{

return false;

}

return true;

}

很抱歉,回答者上传的附件已失效

6. C语言读取excel

1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: 对于EXCEL中的表即sheet([sheet1$])如果不是固定的可以使用下面的方法得到 在使用ImportRow后newds内有值,但不能更新到Excel中因为所有导入行的3.方法三:将EXCEL文件转化成CSV(逗号分隔)的文件,用文件流读取(等价就是读取一个txt文本文件)。 先引用命名空间:using System.Text;和using System.IO;

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文件末

按键精灵里的插件命令://定义变量//dima,textCallPlugin.Office.OpenXls("C:\AA.xls")a=1x=1y=2//读取表格,括号内第2个是行,第3个是列//Text=Plugin.Office.ReadXls(1,a,1)a=a+1//写入指定位置//CallPlugin.Office.WriteXls(2,x,1,text)x=x+1CallPlugin.Office.WriteXls(2,y,1,text)y=y+1如果需要读取B列,C列,就定义多几个变量,最后写个循环命令就行了。

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

ACD

打开EXCEL的数据选项卡,获取外部数据中可以查到

10. c语言读写excel文件

试试这个方法:

vars:string;xls:TXlsReadWrite;beginXls.filename:='c:\123.xls';xls.read;s:=xls.sheets[0].asstring[0,0];showmessage(s);xls.sheets[0].asstring[0,0]:='新闻界';xls.savetofile('c:\234.xls');end;

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