MFC 数据项写入CSV文件

31 篇文章 0 订阅
19 篇文章 0 订阅

 


//将数据项写入CSV文件
int PutCSVItemLine(FILE *file, CStringArray &sItemLine)
{
  //准备行数据
  CStringA sLineString;

  //循环取子项
  for(INT_PTR nItem=0; nItem<sItemLine.GetSize(); nItem++)
  {
    //取子项
    CStringA sItem(sItemLine.GetAt(nItem));

    //查找是否包含引号或逗号
    if(sItem.FindOneOf("\",\r\n") >= 0)
    {
      //单引号替换为双引号
      sItem.Replace("\"", "\"\"");

      //首尾用引号包含
      sItem.Insert(0, "\""); sItem += "\"";
    }

    //添加逗号分隔符
    if(!sLineString.IsEmpty()) sLineString += ",";

    //追加数据
    sLineString += sItem;
  }

  //行尾添加\r\n
  sLineString += "\r\n";

  //写入文件
  return (int) fwrite((LPCSTR)sLineString, 1, sLineString.GetLength(), file);
  
}
//应用实例
void TestCSV()
{
  FILE *f = NULL;
  if(_tfopen_s(&f, _T("E:\\TEMP\\test.csv"), _T("wb")) == 0)
  {
    {
      CStringArray sLine;
      sLine.Add(_T("1"));
      sLine.Add(_T("\"2\""));
      sLine.Add(_T("3,ABC"));
      sLine.Add(_T("4"));
      sLine.Add(_T("\"\""));
      sLine.Add(_T(","));
      sLine.Add(_T("\",\""));
      sLine.Add(_T(""));
      sLine.Add(_T("aaa\",\"bbb"));

      PutCSVItemLine(f, sLine);
    }

    {
      CStringArray sLine;
      sLine.Add(_T("1"));
      sLine.Add(_T("\"2\""));
      sLine.Add(_T("3,ABC"));
      sLine.Add(_T("4"));
      sLine.Add(_T("\"\""));
      sLine.Add(_T(","));
      sLine.Add(_T("\",\""));
      sLine.Add(_T(""));
      sLine.Add(_T("aaa\"??bbb\""));

      PutCSVItemLine(f, sLine);
    }


    fclose(f);
  }
}

输出文件内容

1,"""2""","3,ABC",4,"""""",",",""",""",,"aaa"",""bbb"
1,"""2""","3,ABC",4,"""""",",",""",""",,"aaa""??bbb"""
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值