level 3
很奇怪的错误,我自己手动建立excel表格可以导入,但是再将LIST控件数据导出excel后,再次导入就出错了,错误提示是 非法字符。我对比了手动建立和自动生成的excel表格,发现两者名字没有差别,但是自动生成的excel表格前面有一个 ’ 号,之后我把这个符号去掉,还是无法导入。
2017年09月22日 09点09分
1
level 3
sSql.Format(_T("SELECT * FROM [Sheet1$]"));
pset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
while (!pset.IsEOF())
{
pset.GetFieldValue(_T("编号"), arr[0]); //前面字段必须与表中的相同,否则出错。
pset.GetFieldValue(_T("上公差"), arr[1]);
pset.GetFieldValue(_T("下公差"), arr[2]);
pset.GetFieldValue(_T("修正值"), arr[3]);
pset.GetFieldValue(_T("间隙值"), arr[4]);
这是代码的一部分,应该就是这里导入判断出了问题
2017年09月22日 09点09分
2
level 3
//获得列别框总列数
int iColumnNum, iRowCount;
LVCOLUMN lvCol;
CString strColName; //用于保存列标题名称
int i, j; //列、行循环参数
iColumnNum = m_ListTest.GetHeaderCtrl()->GetItemCount();
iRowCount = m_ListTest.GetItemCount();
sSql = _T(" CREATE TABLE DSO_DX ( ");
strInsert = _T(" INSERT INTO DSO_DX ( ");
//获得列标题名称
lvCol.mask = LVCF_TEXT; //必需设置,说明LVCOLUMN变量中pszText参数有效
lvCol.cchTextMax = 32; //必设,pszText参数所指向的字符串的大小
lvCol.pszText = strColName.GetBuffer(32); //必设,pszText 所指向的字符串的实际存储位置。
//以上三个参数设置后才能通过 GetColumn()函数获得列标题的名称
for (i = 0; i< iColumnNum; i++)
{
if ((!m_ListTest.GetColumn(i, &lvCol)))
return;
if (i<iColumnNum - 1)
{
sSql = sSql + lvCol.pszText + _T(" TEXT , ");
strInsert = strInsert + lvCol.pszText + _T(" , ");
}
else
{
sSql = sSql + lvCol.pszText + _T(" TEXT ) ");
strInsert = strInsert + lvCol.pszText + _T(" ) VALUES ( ");
}
}
//创建Excel表格文件
database.ExecuteSQL(sSql);
//循环提取记录并插入到EXCEL中
sSql = strInsert;
CString chTemp;
for (j = 0; j<iRowCount; j++)
{
//memset(chTemp, 0, 33);
for (i = 0; i<iColumnNum; i++)
{
chTemp=m_ListTest.GetItemText(j, i);
if (i < (iColumnNum - 1))
{
sSql = sSql + _T("'") + chTemp + _T("' , ");
}
else
{
sSql = sSql + _T("'") + chTemp + _T("' ) ");
}
}
//将记录插入到表格中
database.ExecuteSQL(sSql);
sSql = strInsert;
}
}
// 关闭Excel表格文件
database.Close();
这是保存代码,麻烦大神指点一下
2017年09月22日 09点09分
3