C++ builder Stringgrid读取txt文本

    技术2022-05-19  20

    1.将StringGrid写入txt文本中:

    void __fastcall TForm1::Button1Click(TObject *Sender){    int length;    AnsiString Filename = "E://1.txt";//文件的路径      int filehanlde = FileCreate(Filename);//获取文件句柄    AnsiString as = "/t";    AnsiString rn ="/r/n";    for(int i = 0;i < StringGrid1->RowCount;i++)    {        for(int j = 0;j < StringGrid1->ColCount;j++)        {            FileWrite(filehanlde,StringGrid1->Cells[j][i].c_str(),StringGrid1->Cells[j][i].Length());//将数据写入文本中            FileWrite(filehanlde, as.c_str(),as.Length());/写入空格        }        FileWrite(filehanlde,rn.c_str(),rn.Length());//写入换行符

        }    Application->MessageBox("导出成功!","提示",MB_OK|MB_ICONWARNING);    FileClose(filehanlde);//关闭文件}

    2。从txt读取文本到StringGrid中

       AnsiString Filename = "E://1.txt";    TStringList *list = new TStringList();    TStringList *sub = new TStringList();    //int filehandle = FileOpen(Filename,fmOpenRead);    list->LoadFromFile(Filename);    for(int i = 0;i < list->Count;i++)    {

            sub->Delimiter = ' ';        sub->DelimitedText = list->Strings[i];

            for(int c = 0;c < sub->Count;c++)        {             StringGrid1->Cells[c][i] = sub->Strings[c];        }    }    ShowMessage("导入成功");

    思路是将所有的内容写入list中,用一个sub取出其中一列,将空格作为分隔符,这样sub就对应于一个ROWS,将数据填充进去即可,

    好些入Xls文件只需要将AnsiString as = "/t";换成AnsiString as = " ";就能写入execl文本中,读入的时候将将路径修改即可,不需要修改。。。


    最新回复(0)