listview导出txt文档有关问题
listview导出txt文档问题
各位高手好,向大家请教个问题?请指点!
我在listview中的显示数据如下:
3 27.434 10.511 C1 105.664 70.104 270
3 27.434 10.511 C2 129.032 57.404 180
3 27.434 10.511 C3 123.444 71.12 180
想把这些数据导出txt文档,并且数据之间有逗号,于是我编了下面的程序:
结果我自己得到的输出的txt文档文本内容显示为如下:
3,
27.434,
10.511,
C1,
105.664,
70.104,
270,
3,
27.434,
10.511,
C2,
129.032,
57.404,
180,
3,
27.434,
10.511,
C3,
123.444,
71.12,
180,
我想要的输出的txt文档的内容为如下:
3,27.434,10.511,C1,105.664,70.104,270
3,27.434,10.511,C2,129.032,57.404,180
3,27.434,10.511,C3,123.444,71.12 ,180
不知道到怎么改程序,请高手不吝赐教!!!谢谢!
------解决方案--------------------
达不到你想要的结果,就得自己去寻找原因!
来给你分析下
for(int j=0; j<ListView1-> Columns-> Count-1; j++)
{
if (j < outcItem-> SubItems-> Count)
outcsv-> Add( outcItem-> SubItems-> Strings[j]+",");
TStringList 的outcsv每调用Add一次,表示增加一个元素(AnsiString) ,保存到TXT里就是一行了
你上面的for循环是每取一个单元格 ,就Add一次 。所以你的每个单元格信息变成了一行。
要变成3,27.434,10.511,C1,105.664,70.104,270 行格式
你需要把每行单个元信息都取完,拼接起来 然后add 就如你所愿了
代码思路如下:
AnsiString Str ="";
.......
for(int j=0; j<ListView1-> Columns-> Count-1; j++)
Str +=outcItem-> SubItems-> Strings[j]+",";
outcsv->Add(Str);
.......
------解决方案--------------------
String str;//用字符串变量中转一下就OK
TStringList* outcsv = new TStringList;
for(int i=0; i <ListView1-> Items-> Count; i++)
{
TListItem* outcItem= (TListItem*)ListView1-> Items-> Item[i];
str=outcItem-> Caption+",";
for(int j=0; j<ListView1-> Columns-> Count-1; j++)
{
if (j < outcItem-> SubItems-> Count)
str= outcItem-> SubItems-> Strings[j]+",";
else
str=" ";
}
outcsv->Add(str);
}
outcsv-> SaveToFile( "C:\\Users\\samsung\\Desktop\\12345.txt ");
delete outcsv;
各位高手好,向大家请教个问题?请指点!
我在listview中的显示数据如下:
3 27.434 10.511 C1 105.664 70.104 270
3 27.434 10.511 C2 129.032 57.404 180
3 27.434 10.511 C3 123.444 71.12 180
想把这些数据导出txt文档,并且数据之间有逗号,于是我编了下面的程序:
- C/C++ code
TStringList* outcsv = new TStringList; for(int i=0; i <ListView1-> Items-> Count; i++) { TListItem* outcItem= (TListItem*)ListView1-> Items-> Item[i]; outcsv-> Add(outcItem-> Caption+","); for(int j=0; j<ListView1-> Columns-> Count-1; j++) { if (j < outcItem-> SubItems-> Count) outcsv-> Add( outcItem-> SubItems-> Strings[j]+","); else outcsv-> Add( " "); } } outcsv-> SaveToFile( "C:\\Users\\samsung\\Desktop\\12345.txt "); delete outcsv;
结果我自己得到的输出的txt文档文本内容显示为如下:
3,
27.434,
10.511,
C1,
105.664,
70.104,
270,
3,
27.434,
10.511,
C2,
129.032,
57.404,
180,
3,
27.434,
10.511,
C3,
123.444,
71.12,
180,
我想要的输出的txt文档的内容为如下:
3,27.434,10.511,C1,105.664,70.104,270
3,27.434,10.511,C2,129.032,57.404,180
3,27.434,10.511,C3,123.444,71.12 ,180
不知道到怎么改程序,请高手不吝赐教!!!谢谢!
------解决方案--------------------
达不到你想要的结果,就得自己去寻找原因!
来给你分析下
for(int j=0; j<ListView1-> Columns-> Count-1; j++)
{
if (j < outcItem-> SubItems-> Count)
outcsv-> Add( outcItem-> SubItems-> Strings[j]+",");
TStringList 的outcsv每调用Add一次,表示增加一个元素(AnsiString) ,保存到TXT里就是一行了
你上面的for循环是每取一个单元格 ,就Add一次 。所以你的每个单元格信息变成了一行。
要变成3,27.434,10.511,C1,105.664,70.104,270 行格式
你需要把每行单个元信息都取完,拼接起来 然后add 就如你所愿了
代码思路如下:
AnsiString Str ="";
.......
for(int j=0; j<ListView1-> Columns-> Count-1; j++)
Str +=outcItem-> SubItems-> Strings[j]+",";
outcsv->Add(Str);
.......
------解决方案--------------------
String str;//用字符串变量中转一下就OK
TStringList* outcsv = new TStringList;
for(int i=0; i <ListView1-> Items-> Count; i++)
{
TListItem* outcItem= (TListItem*)ListView1-> Items-> Item[i];
str=outcItem-> Caption+",";
for(int j=0; j<ListView1-> Columns-> Count-1; j++)
{
if (j < outcItem-> SubItems-> Count)
str= outcItem-> SubItems-> Strings[j]+",";
else
str=" ";
}
outcsv->Add(str);
}
outcsv-> SaveToFile( "C:\\Users\\samsung\\Desktop\\12345.txt ");
delete outcsv;