Excel表格网

c输出excel文件(c语言读取excel文件)

197 2022-10-07 14:55 魏紫   手机版

1. 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;

}


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


2. c语言读取excel文件数据

VB操作EXCEL

全面控制 Excel

首先创建 Excel 对象,使用ComObj:

Dim ExcelID as Excel.Application

Set ExcelID as new Excel.Application

1) 显示当前窗口:

ExcelID.Visible := True;

2) 更改 Excel 标题栏:

ExcelID.Caption := \'应用程序调用 Microsoft Excel\';

3) 添加新工作簿:

ExcelID.WorkBooks.Add;

4) 打开已存在的工作簿:

ExcelID.WorkBooks.Open( \'C:\\Excel\\Demo.xls\' );

5) 设置第2个工作表为活动工作表:

ExcelID.WorkSheets[2].Activate;

或 ExcelID.WorkSheets[ \'Sheet2\' ].Activate;

6) 给单元格赋值:

ExcelID.Cells[1,4].Value := \'第一行第四列\';

7) 设置指定列的宽度(单位:字符个数),以第一列为例:

ExcelID.ActiveSheet.Columns[1].ColumnsWidth := 5;

8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:

ExcelID.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米

9) 在第8行之前插入分页符:

ExcelID.WorkSheets[1].Rows[8].PageBreak := 1;

参考代码:ActiveSheet.HPageBreaks(1).Location = Range("A22")

10) 在第8列之前删除分页符:

ExcelID.ActiveSheet.Columns[4].PageBreak := 0;

11) 指定边框线宽度:

ExcelID.ActiveSheet.Range[ \'B3:D4\' ].Borders[2].Weight := 3;

1-左 2-右 3-顶 4-底 5-斜( \\ ) 6-斜( / )

12) 清除第一行第四列单元格公式:

ExcelID.ActiveSheet.Cells[1,4].ClearContents;

13) 设置第一行字体属性:

ExcelID.ActiveSheet.Rows[1].Font.Name := \'隶书\';

ExcelID.ActiveSheet.Rows[1].Font.Color := clBlue;

ExcelID.ActiveSheet.Rows[1].Font.Bold := True;

ExcelID.ActiveSheet.Rows[1].Font.UnderLine := True;

14) 进行页面设置:

a.页眉:

ExcelID.ActiveSheet.PageSetup.CenterHeader := \'报表演示\';

b.页脚:

ExcelID.ActiveSheet.PageSetup.CenterFooter := \'第&P页\';

c.页眉到顶端边距2cm:

ExcelID.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;

d.页脚到底端边距3cm:

ExcelID.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;

e.顶边距2cm:

ExcelID.ActiveSheet.PageSetup.TopMargin := 2/0.035;

f.底边距2cm:

ExcelID.ActiveSheet.PageSetup.BottomMargin := 2/0.035;

g.左边距2cm:

ExcelID.ActiveSheet.PageSetup.LeftMargin := 2/0.035;

h.右边距2cm:

ExcelID.ActiveSheet.PageSetup.RightMargin := 2/0.035;

i.页面水平居中:

ExcelID.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;

j.页面垂直居中:

ExcelID.ActiveSheet.PageSetup.CenterVertically := 2/0.035;

k.打印单元格网线:

ExcelID.ActiveSheet.PageSetup.PrintGridLines := True;

15) 拷贝操作:

a.拷贝整个工作表:

ExcelID.ActiveSheet.Used.Range.Copy;

b.拷贝指定区域:

ExcelID.ActiveSheet.Range[ \'A1:E2\' ].Copy;

c.从A1位置开始粘贴:

ExcelID.ActiveSheet.Range.[ \'A1\' ].PasteSpecial;

d.从文件尾部开始粘贴:

ExcelID.ActiveSheet.Range.PasteSpecial;

16) 插入一行或一列:

a. ExcelID.ActiveSheet.Rows[2].Insert;

b. ExcelID.ActiveSheet.Columns[1].Insert;

17) 删除一行或一列:

a. ExcelID.ActiveSheet.Rows[2].Delete;

b. ExcelID.ActiveSheet.Columns[1].Delete;

18) 打印预览工作表:

ExcelID.ActiveSheet.PrintPreview;

19) 打印输出工作表:

ExcelID.ActiveSheet.PrintOut;

20) 工作表保存:

If not ExcelID.ActiveWorkBook.Saved then

ExcelID.ActiveSheet.PrintPreview

End if

21) 工作表另存为:

ExcelID.SaveAs( \'C:\\Excel\\Demo1.xls\' );

22) 放弃存盘:

ExcelID.ActiveWorkBook.Saved := True;

23) 关闭工作簿:

ExcelID.WorkBooks.Close;

24) 退出 Excel:

ExcelID.Quit;

25) 设置工作表密码:

ExcelID.ActiveSheet.Protect "123", DrawingObjects:=True, Contents:=True, Scenarios:=True

26) EXCEL的显示方式为最大化

ExcelID.Application.WindowState = xlMaximized

27) 工作薄显示方式为最大化

ExcelID.ActiveWindow.WindowState = xlMaximized

28) 设置打开默认工作薄数量

ExcelID.SheetsInNewWorkbook = 3

29) \'关闭时是否提示保存(true 保存;false 不保存)

ExcelID.DisplayAlerts = False

30) 设置拆分窗口,及固定行位置

ExcelID.ActiveWindow.SplitRow = 1

ExcelID.ActiveWindow.FreezePanes = True

31) 设置打印时固定打印内容

ExcelID.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"

32) 设置打印标题

ExcelID.ActiveSheet.PageSetup.PrintTitleColumns = ""

33) 设置显示方式(分页方式显示)

ExcelID.ActiveWindow.View = xlPageBreakPreview

34) 设置显示比例

ExcelID.ActiveWindow.Zoom = 100

35) 让Excel 响应 DDE 请求

Ex.Application.IgnoreRemoteRequests = False

用VB操作EXCEL

Private Sub Command3_Click()

On Error GoTo err1

Dim i As Long

Dim j As Long

Dim objExl As Excel.Application \'声明对象变量

Me.MousePointer = 11 \'改变鼠标样式

Set objExl = New Excel.Application \'初始化对象变量

objExl.SheetsInNewWorkbook = 1 \'将新建的工作薄数量设为1

objExl.Workbooks.Add \'增加一个工作薄

objExl.Sheets(objExl.Sheets.Count).Name = "book1" \'修改工作薄名称

objExl.Sheets.Add , objExl.Sheets("book1") ‘增加第二个工作薄在第一个之后

objExl.Sheets(objExl.Sheets.Count).Name = "book2"

objExl.Sheets.Add , objExl.Sheets("book2") ‘增加第三个工作薄在第二个之后

objExl.Sheets(objExl.Sheets.Count).Name = "book3"

objExl.Sheets("book1").Select \'选中工作薄<book1>

For i = 1 To 50 \'循环写入数据

For j = 1 To 5

If i = 1 Then

objExl.Selection.NumberFormatLocal = "@" \'设置格式为文本

objExl.Cells(i, j) = " E " & i & j

Else

objExl.Cells(i, j) = i & j

End If

Next

Next

objExl.Rows("1:1").Select \'选中第一行

objExl.Selection.Font.Bold = True \'设为粗体

objExl.Selection.Font.Size = 24 \'设置字体大小

objExl.Cells.EntireColumn.AutoFit \'自动调整列宽

objExl.ActiveWindow.SplitRow = 1 \'拆分第一行

objExl.ActiveWindow. SplitColumn = 0 \'拆分列

objExl.ActiveWindow.FreezePanes = True \'固定拆分 objExl.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" \'设置打印固定行

objExl.ActiveSheet.PageSetup.PrintTitleColumns = "" \'打印标题 objExl.ActiveSheet.PageSetup.RightFooter = "打印时间: " & _

Format(Now, "yyyy年mm月dd日 hh:MM:ss")

objExl.ActiveWindow.View = xlPageBreakPreview \'设置显示方式

objExl.ActiveWindow.Zoom = 100 \'设置显示大小

objExl.ActiveSheet.PageSetup.Orientation = xlLandscape ‘设置打印方向(横向)

\'给工作表加密码

objExl.ActiveSheet.Protect "123", DrawingObjects:=True, _

Contents:=True, Scenarios:=True

objExl.Application.IgnoreRemoteRequests = False

objExl.Visible = True \'使EXCEL可见

objExl.Application.WindowState = xlMaximized \'EXCEL的显示方式为最大化

objExl.ActiveWindow.WindowState = xlMaximized \'工作薄显示方式为最大化

objExl.SheetsInNewWorkbook = 3 \'将默认新工作薄数量改回3个

Set objExl = Nothing \'清除对象

Me.MousePointer = 0 \'修改鼠标

Exit Sub

err1:

objExl.SheetsInNewWorkbook = 3

objExl.DisplayAlerts = False \'关闭时不提示保存

objExl.Quit \'关闭EXCEL

objExl.DisplayAlerts = True \'关闭时提示保存

Set objExl = Nothing

Me.MousePointer = 0

End Sub


3. c操作excel文件读写

//第一步:打开文件CFile f;CFileException e;// 打开文件if (!f.Open("D:\\Book1.xls", CFile::modeRead, &e)){TCHAR szError[1024];e.GetErrorMessage(szError, 1024);AfxMessageBox(szError);return;}//第二步:读取版本号// 读取版本while (dwPos


4. 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);頭條萊垍

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


5. c中如何读取excel数据

ACD

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


6. c语言读写excel文件

可以使用windows API、再通过OLE去调用 ,或 activeX 技术~~~


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单元格内容

在excel表格里,计算一个sheet表使用的行数,这个功能的应用还是非常的广泛的.萊垍頭條

在VBA编程里,通过计算行数,然后使用for next循环的方式来进行数据的计算是一个非常常用的解决问题的思路.现在根据以图片为例来罗列几个计算表格已经使用行数的计算方法.垍頭條萊

方法一:垍頭條萊

arr=sheets("数据表").range("a1").currentregion.value頭條萊垍

頭條萊垍

r=ubound(arr)垍頭條萊

方法说明:先把整个数据表有数值的部分装入数据之中,使用ubound(arr)来计算数组的行数,即可以计算出已经使用的最后一行的行数.这个路线是"曲线救国"的方法.垍頭條萊

方法二:萊垍頭條

with sheets("数据表")萊垍頭條

r=.cells(.rows.count,"c").end(3).row頭條萊垍

萊垍頭條

end with萊垍頭條

方法说明:使用.rows.count萊垍頭條

函数直接计算工作表里已经使用的行数,此处计算行数使用的是C列的已经有数据的行数的标准.萊垍頭條

方法三:垍頭條萊

with sheets("数据表")萊垍頭條

.range("c65536").end(xlup).row萊垍頭條

end with條萊垍頭

方法说明:end.row垍頭條萊

从单元格C65536往上找有数据的最下一行的行数.即计算出已经使用过的行数.萊垍頭條

以上三种方法均可以计算出指定工作表的已经使用过的行数.萊垍頭條


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

1.

我们先说一下数组的输入的规则,当前数组2有三个元素,如果输入的话是用逗号进行隔开的。

2.

数组三如果输入的话是要用分号进行隔开的,因为它有三列。

3.

我们输入一个数组五,首先计算出它是由八位元素组成,我们就框选八个单元格。

4.

然后直接输入等号,先输入大括号。

5.

然后上一行的四个数用逗号隔开。

6.

到下一列就用一个分号,后面还是行的话就用逗号。

7.

然后按快捷键control shift 加回车键,就得到我们需要的数组了。


10. c++读取excel文件

在电脑上接就条码扫描器(如果是PS接口要重新开机﹐USB接口可以直接使用)﹐设备正常后﹐打开Excel, 然后就可以扫描来实现数据录入Excel文档. 注意﹕ 扫描器可以进行必要的设置(参考说明书),增加一回车,增加两回车等功能.


顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
用户名: 验证码:点击我更换图片