none
求助:MFC使用ODBC向Excel写数据失败??? RRS feed

  • 问题

  • CTime time = CTime::GetCurrentTime();

    //得到当前时间

    CString strExcelFile;

    // 时间格式转换

    strExcelFile = time.Format(_T("D:\\%Y年%m月%d日%H:%M:%S.xls"));

    // Excel安装驱动

    CDatabase database;

    CString sDriver = _T("MICROSOFT EXCEL DRIVER (*.XLS)");

      // 要建立的Excel文件

    //strExcelFile = L"C:\\demo.xls";

    CString sSql;

    TRY

    {

    // 创建进行存取的字符串

    sSql.Format(_T("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s"),

        sDriver, strExcelFile, strExcelFile);

    // 创建数据库 (既Excel表格文件)

        if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )

        {

            // 创建表结构(姓名、年龄)

           sSql = L"CREATE TABLE Exceldemo (Name TEXT,Age NUMBER)";

           database.ExecuteSQL(sSql);

            // 关闭数据库 database.Close();

        }

     

     

    一运行就出现:

    创建文件失败, 非法的连接串属性FIRSTROWHASNAMES

    非法的连接串属性CREATE_DB

    非法的连接串属性FIRSTROWHASNAMES

    非法的连接串属性CREATE_DB

    非法的连接串属性FIRSTROWHASNAMES

    非法的连接串属性CREATE_DB

    非法的连接串属性FIRSTROWHASNAMES

    非法的连接串属性CREATE_DB

    非法的连接串属性FIRSTROWHASNAMES

    非法的连接串属性CREATE_DB

    非法的连接串属性FIRSTROWHASNAMES

    非法的连接串属性CREATE_DB

    驱动程序的SqlSetConnectAttr失败

     

    但是:如果我直接使用strExcelFile = ——T("C:\\demo.xls");就没问题,怎么回事?我估计问题出在strExcelFile = time.Format(_T("D:\\%Y年%m月%d日%H:%M:%S.xls"));我要的是按时间命名的Excel而不是固定的。 高手前辈们帮忙看看,谢谢大家,呵呵。

    2011年9月30日 2:12

答案

  • 我可以确认的是,问题出在时间转化为excel文件名字那,
    把,strExcelFile = time.Format(_T("D:\\%Y年%m月%d日%H:%M:%S.xls"));
    换为:strExcelFile = _T(“123.xls");
    就没问题。
    2011年9月30日 2:33
  • 我的神啊,我彻底无语了,问题解决了。问题出在strExcelFile = time.Format(_T("D:\\%Y年%m月%d日%H:%M:%S.xls"));windows文件名不能有'.' ':'之类的字符,微软称之为非法字符。唉,教训啊。
    2011年9月30日 2:58

全部回复

  • 我可以确认的是,问题出在时间转化为excel文件名字那,
    把,strExcelFile = time.Format(_T("D:\\%Y年%m月%d日%H:%M:%S.xls"));
    换为:strExcelFile = _T(“123.xls");
    就没问题。
    2011年9月30日 2:33
  • 我的神啊,我彻底无语了,问题解决了。问题出在strExcelFile = time.Format(_T("D:\\%Y年%m月%d日%H:%M:%S.xls"));windows文件名不能有'.' ':'之类的字符,微软称之为非法字符。唉,教训啊。
    2011年9月30日 2:58
  • 把:strExcelFile = time.Format(_T("D:\\%Y年%m月%d日%H:%M:%S.xls"));改为:strExcelFile = time.Format(_T("D:\\%Y年%m月%d日%H时%M分%S秒.xls"));windows文件名不能有'.' ':'之类的字符,微软称之为非法字符。
    2011年9月30日 2:59
  • 你好,

     

    和高兴您已经得知您已经解决了您的问题,并在此分享您的解决方案。这将会对有类似问题的用户有着莫大的帮助。谢谢


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年10月4日 3:03