您的位置:首页 > 数据库

C# 用数据库读取Excel出现“定义了过多字段”错误

2013-03-13 10:14 211 查看
原来by sheetname获取

string strConn;
DataSet objMyDataSet = new DataSet();
//读上传文件内容
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;";
strConn = strConn + "Data Source=" + filePath;
objMyOleDbConnection.ConnectionString = strConn;
objMyOleDbConnection.Open();
OleDbDataAdapter objMyDataAdapter = new OleDbDataAdapter("SELECT * FROM [" + sheetName + "$]", objMyOleDbConnection);
objMyDataAdapter.Fill(objMyDataSet, sheetName);
DataTable dtblSheet = objMyDataSet.Tables[sheetName];
// 移除名称为空的数据列
for (int j = 0; j < dtblSheet.Columns.Count; j++)
{
dtblSheet.Columns[j].ColumnName = dtblSheet.Columns[j].ColumnName.Trim();
if (string.IsNullOrEmpty(dtblSheet.Columns[j].ColumnName) || dtblSheet.Columns[j].ColumnName.Trim().Length == 0)
{
dtblSheet.Columns.RemoveAt(j);
j--;
}
}
// 移除默认的Sheet
if (dtblSheet.Columns.Count == 0 || (dtblSheet.Columns.Count == 1 && dtblSheet.Columns[0].ColumnName == "F1" && (dtblSheet.Rows.Count == 0 || (dtblSheet.Rows.Count == 1 && dtblSheet.Rows[0][0] == DBNull.Value))))
{
objMyDataSet.Tables.Remove(dtblSheet);
}
return objMyDataSet;


发现提示定义过多字段的问题, 先看了下Excel,三个sheet其中一个sheet最多到G列,增加设置A:G 就避免了

string strConn;
DataSet objMyDataSet = new DataSet();
//读上传文件内容
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;";
strConn = strConn + "Data Source=" + filePath;
objMyOleDbConnection.ConnectionString = strConn;
objMyOleDbConnection.Open();
OleDbDataAdapter objMyDataAdapter = new OleDbDataAdapter("SELECT * FROM [" + sheetName + "$A:G]", objMyOleDbConnection);
objMyDataAdapter.Fill(objMyDataSet, sheetName);
DataTable dtblSheet = objMyDataSet.Tables[sheetName];
// 移除名称为空的数据列
for (int j = 0; j < dtblSheet.Columns.Count; j++)
{
dtblSheet.Columns[j].ColumnName = dtblSheet.Columns[j].ColumnName.Trim();
if (string.IsNullOrEmpty(dtblSheet.Columns[j].ColumnName) || dtblSheet.Columns[j].ColumnName.Trim().Length == 0)
{
dtblSheet.Columns.RemoveAt(j);
j--;
}
}
// 移除默认的Sheet
if (dtblSheet.Columns.Count == 0 || (dtblSheet.Columns.Count == 1 && dtblSheet.Columns[0].ColumnName == "F1" && (dtblSheet.Rows.Count == 0 || (dtblSheet.Rows.Count == 1 && dtblSheet.Rows[0][0] == DBNull.Value))))
{
objMyDataSet.Tables.Remove(dtblSheet);
}
return objMyDataSet;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐