用C语言将excel某一列输出到TXT

完全是新手c++也可以,求程序
2024-11-03 13:21:45
推荐回答(5个)
回答1:

C语言有文件操作函数

如fopen之类,然后就读取函数就可以了

但应该怎么读,必须要看你的文件内容是什么样子的,才能确定用什么读取命令,

一般的用fscanf就可以

由于行数未知,所以解决方法可以有两个,

1.是定义足够大的数组,比如你最多有100行,那么就定义一个100元素的数组,这样程序简单,但不灵活.

2.是用链表,但编程要复杂些

#include
#define N 50
void main()
{
 int a[N],b[N],c[N],d[N];
 int i=0,n;
 FILE *f;
 if((f=fopen("a16.txt","r"))==NULL) 
 {
  printf("无法打开\n");return;
 }
 while(!feof(f))
 { fscanf(f,"%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
  i++;
 }
 fclose(f);
 for(n=i,i=0;i  printf("%5d %5d %5d %5d\n",a[i],b[i],c[i],d[i]);

}

回答2:

问题看似明确,但其实不是问得很明确,只能说你问的是步骤,而不是细节。就如你问“怎么开个包子店?”一样,问题很大,如果你问的是“包子皮弄多大?”或"一个包子该卖多少钱?",这就具体了,那就问的是细节。

因为你的问题是难以给你细化的回答,只能给你说步骤。

1、每种文件格式都是有自己的存储方式的,如第10个字节存什么 第几字节个到第几个存的是什么都是有其规则的,而excel的信息量是非常大的(文字、字体、颜色、插图、列表、列表格式....等),所以excel的文件存储方式是非常复杂的,而且其中还有可能有些信息还要经过压缩算法,所以 要自己去写代码解析某一列或某一格的文字是很难,一般不会这么做。
2、那么不用自己去解析怎么办呢?用开源库,只有用开源代码才能方便解决问题(一般也都如此)。
3、用什么开源库?到网上搜一下,可以用libxls,免费开源。可以下载。
4、然后编译通过这个库
5、然后自己写代码调用这个库提供的读取excel内容的函数,得到信息,写到文本txt

回答3:

我之前也遇到这样的问题,觉得这个答案挺好的。

C语言有文件操作函数
如fopen之类,然后就读取函数就可以了
但应该怎么读,必须要看你的文件内容是什么样子的,才能确定用什么读取命令,
一般的用fscanf就可以
由于行数未知,所以解决方法可以有两个,
1.是定义足够大的数组,比如你最多有100行,那么就定义一个100元素的数组,这样程序简单,但不灵活.
2.是用链表,但编程要复杂些
#include
#define N 50
void main()
{
int a[N],b[N],c[N],d[N];
int i=0,n;
FILE *f;
if((f=fopen("a16.txt","r"))==NULL)
{
printf("无法打开\n");return;
}
while(!feof(f))
{ fscanf(f,"%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
i++;
}
fclose(f);
for(n=i,i=0;i printf("%5d %5d %5d %5d\n",a[i],b[i],c[i],d[i]);
}

回答4:

#include "CSpreadSheet.h" //包含Excel文件操作类头文件
CSpreadSheet SS("c:\\Test.xls", "TestSheet"); // 新建Excel文件名及路径,TestSheet为内部表名
CStringArray sampleArray, testRow;
SS.BeginTransaction();
// 加入标题
sampleArray.RemoveAll();
sampleArray.Add("姓名");
sampleArray.Add("年龄");
SS.AddHeaders(sampleArray);
// 加入数据
CString strName[] = {"张三","李四","王五","陈六","赵七"};
CString strAge[] = {"55","66","77","88","99"};
for(int i = 0; i < sizeof(strName)/sizeof(CString); i++)
{
sampleArray.RemoveAll();
sampleArray.Add(strName[i]);
sampleArray.Add(strAge[i]);
SS.AddRow(sampleArray);
}
SS.Commit();
CSpreadSheet SS("c:\\Test.xls", "TestSheet");  //读取Excel文件数据
CStringArray Rows, Column;
//清空列表框
m_AccessList.ResetContent();
for (int i = 1; i <= SS.GetTotalRows(); i++)
{
// 读取一行
SS.ReadRow(Rows, i);
CString strContents = "";
for (int j = 1; j <= Rows.GetSize(); j++)
{
if(j == 1)
strContents = Rows.GetAt(j-1);
else
strContents = strContents + " --> " + Rows.GetAt(j-1);
}
m_AccessList.AddString(strContents);
}
#include "CSpreadSheet.h" //包含Excel文件操作类头文件
CSpreadSheet SS("c:\\Test.xls", "TestSheet"); // 新建Excel文件名及路径,TestSheet为内部表名
CStringArray sampleArray, testRow;
SS.BeginTransaction();
// 加入标题
sampleArray.RemoveAll();
sampleArray.Add("姓名");
sampleArray.Add("年龄");
SS.AddHeaders(sampleArray);
// 加入数据
CString strName[] = {"张三","李四","王五","陈六","赵七"};
CString strAge[] = {"55","66","77","88","99"};
for(int i = 0; i < sizeof(strName)/sizeof(CString); i++)
{
sampleArray.RemoveAll();
sampleArray.Add(strName[i]);
sampleArray.Add(strAge[i]);
SS.AddRow(sampleArray);
}
SS.Commit();
CSpreadSheet SS("c:\\Test.xls", "TestSheet");  //读取Excel文件数据
CStringArray Rows, Column;
//清空列表框
m_AccessList.ResetContent();
for (int i = 1; i <= SS.GetTotalRows(); i++)
{
// 读取一行
SS.ReadRow(Rows, i);
CString strContents = "";
for (int j = 1; j <= Rows.GetSize(); j++)
{
if(j == 1)
strContents = Rows.GetAt(j-1);
else
strContents = strContents + " --> " + Rows.GetAt(j-1);
}
m_AccessList.AddString(strContents);
}

回答5:

操作编码如下:

int strlen(char *p)
{
int i=0;
while(*p++)i++;
return i;
}

#include
#include

void main()
{
char x[3]={0};
x[0]='a';
x[1]='b';
x[2]='c';
int len=strlen(x);
printf("%c %d \r\n",x[6],len);
}