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文档. 注意﹕ 扫描器可以进行必要的设置(参考说明书),增加一回车,增加两回车等功能.
- 相关评论
- 我要评论
-