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;


- 相关评论
- 我要评论
-