2

我有一个输入文件“inputfile.txt”,从中读取输入。

inputfile.txt 是:-

|I|line|number|1

|P|line|number|2

|I|line|number|3

|P|line|number|4

|I|line|number|5

|P|line|number|6

现在我正在根据条件处理这个文件,如果第二个字符是 I,那么它将写入“Iout.xls”,如果它是“P”,则写入“Pout.xls”

Iout.xls :-

|I|line|number|1

|I|line|number|3

|I|line|number|5

Pout.xls:-

|P|line|number|2

|P|line|number|4

|P|line|number|6

两者都是由管道分隔的 excel 文件。

这是我正在做的代码:-

#include<iostream>
#include<fstream>
#include<string>
#include<vector>
using namespace std;
int main() {
 ifstream in;
 ofstream Iout,Pout;
 string str;
 string::iterator it;
 in.open("inputfile.txt");
 Iout.open("Iout.xls",fstream::app);
 Pout.open("Pout.xls",fstream::app);
 if(in.is_open()){
  while(in.good()) {
   getline(in,str);
   it=str.begin()+1;
   if(*(it)=='I')
     Iout<<str<<endl;
   if(*(it)=='P')
     Pout<<str<<endl;
  }
 }
 else cout<<"can't open file";
 Iout.close();
 Pout.close();
 in.close();
 return 0;
}

我有两个疑问:-

1.我将值作为文本插入到 excel 中(例如,“|P|line|number|2”作为文本插入到 Pout.xls 中)并且我正在手动对列进行文本,有什么方法可以使用 c++ 自动执行此操作。

即,|P|line|number|2 将插入为:- 第一列中的空格,第二列中的 P,第三列中的行,第四列中的数字和第五列中的 2。

我的第二个查询:-我正在编写两个不同的文件 Iout.xls 和 Pout.xls,然后在将两个文件中的文本转换为列之后,我将两个文件复制到一个文件 FinalOut.xls 中,其中包含两个不同的表 Iout 和 Pout Iout.xls 和 Pout.xls 的数据。如何使用 c++ 打开 Excel 文件的不同工作表并将相应的数据直接写入工作表。

即,sheet1 将是 Iout,而 sheet2 将是 Pout。

我正在为我的代码使用 devc++。

谢谢你

4

1 回答 1

1

Excel 能够导入基于 HTML 的文件 - 查看http://msdn.microsoft.com/en-us/library/Aa155477%28office.10%29.aspx的官方文档

由于 HTML 是“基于文本的”,因此您应该能够轻松编写...

另一种选择是使用 Excel 确实理解的 CSV(也是基于文本的),但 CSV 不支持不同的工作表。

XLS 是微软定义的一种二进制文件格式,它相当复杂......一个选项是像LibXL这样的商业库- 它可以读取和写入“真正的 Excel 格式(XLS 等)”,包括支持不同的工作表等。

于 2013-05-08T07:22:12.150 回答