Excel导入datagridview, 数据错误 本帖最后由 tanwei6666 于 2011-10-26 15:35:34 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对于第一条:处理后的数据有没有办法识别呢?对于第二条:如果我倒错了,那么新建的.xlsx的应该也是错的,毕竟两个Excel显示的数据是一模一样的,这一条的可能性 可能不大;对于第三条:不太理解,不过就算数据类型出问题了,那么也不是所有的类型都错吧。。那个错误数据里的图,一个数据都对不上 迈达斯(MIDAS)如果不是你自己写的多话 出问题就没办法了 只有自己写一个 要是自己写的把代码贴出来 迈达斯(MIDAS)是工程应用里的一个专业软件,我的任务就是把里面的软件里的数据读出来,然后再进一步的分析;百度百科:http://baike.baidu.com/view/648584.htm公司主页:http://www.midasuser.com.tw/index.aspx 你这个很纠结啊 导出excel表里的数据 你自己写程序导出撒 回复楼上:从别人的软件里重写一个导出Excel的数据的方法,貌似有点困难吧?我先去查查资料…… 把你导出的excel另存为逗号格式的文件看看。 从别人的网站上导出的都是html格式的,你要把他当成excel导入肯定有问题 是把Excel另存为.CSV文件吗?结果如下:貌似没有什么特别奇怪的地方啊。我还是把我的从Excel导入到datagridview的代码发出来吧,看看是不是这出了问题:/// <summary> /// 从Excel中导入数据到表格中 /// </summary> /// <param name="p"></param> /// <param name="dataGridViewX1"></param> private void EcxelToDataGridView(string filePath, DataGridViewX dataGridViewX1) { string strConn; if (filePath.EndsWith(".xls")) { strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=YES;IMEX=1'"; } else if (filePath.EndsWith(".xlsx")) { strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'"; } else { return; } OleDbConnection conn = new OleDbConnection(strConn); try { conn.Open(); } catch { MessageBox.Show("格式错误,请打开Excel文件"); return; } string SelectCommandText = "select * from [sheet1$]"; OleDbDataAdapter adapter = new OleDbDataAdapter(SelectCommandText, conn); DataSet ds = new DataSet(); adapter.Fill(ds, "ExcelTable"); //根据DataGridView的列构造一个新的DataTable DataTable dt = new DataTable(); foreach (DataGridViewColumn dgvc in dataGridViewX1.Columns) { if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell)) { DataColumn dc = new DataColumn(); dc.ColumnName = dgvc.DataPropertyName; //若需要限制导入时的数据类型则取消注释,前提是DataGridView必须先绑定一个数据源那怕是空的DataTable //dc.DataType = dgvc.ValueType; dt.Columns.Add(dc); } } //根据Excel的行逐一对上面构造的DataTable的列进行赋值 foreach (DataRow excelRow in ds.Tables["ExcelTable"].Rows) { int i = 0; DataRow dr = dt.NewRow(); foreach (DataColumn dc in dt.Columns) { dr[dc] = excelRow[i]; i++; //如果Excel里的表格的列数小于dataGridView里的列数 if (i == ds.Tables["ExcelTable"].Columns.Count) break; } dt.Rows.Add(dr); } DataGridViewControl.CopyDTableToGrid(dataGridViewX1, dt); DataGridViewControl.CopyDTableToGrid(CurrentGrid, dt); conn.Close(); } 不是从别人网站上导出的,我手上有这个软件,这个软件有个功能是把数据导出到Excel的 是指select * from [sheet1$] ? 能说具体点吗? 这个问题后来解决了,原来是因为我在方法里写的是“select * from [sheet1$]”但是实际上Excel里的表格有很多sheet。我是说呢,我读出来的数字这么奇怪,原来是第一层的,但是我的Excel显示的是sheet4做个标记,方便以后遇到同样情况的朋友。当然不知道还能不能出现像我这么这么粗心大意的朋友 XML 根据节点增(删、改)其平级节点如何操作 关于Gridview显示datatable 求助~~~哪个大虾给我解答,我感激他一辈子!!! C#应用程序 懂socket的请进..在线! 小问题 ??....怎样通过datatable把数据绑到...??/ mshtml 将某个frame页面设为焦点,求助 winform中的窗体问题 如何将StatusStrip里的ToolStripStatusLabel放置到最右边 picturebox中的图片处理问题 关于自定义数据类型,大家看看。来人有分。 c# 连接MYSQL 获取的数据比实际的少 请教解密一字符串
对于第一条:处理后的数据有没有办法识别呢?
对于第二条:如果我倒错了,那么新建的.xlsx的应该也是错的,毕竟两个Excel显示的数据是一模一样的,这一条的可能性 可能不大;
对于第三条:不太理解,不过就算数据类型出问题了,那么也不是所有的类型都错吧。。那个错误数据里的图,一个数据都对不上
迈达斯(MIDAS)是工程应用里的一个专业软件,我的任务就是把里面的软件里的数据读出来,然后再进一步的分析;
百度百科:http://baike.baidu.com/view/648584.htm
公司主页:http://www.midasuser.com.tw/index.aspx
是把Excel另存为.CSV文件吗?结果如下:
貌似没有什么特别奇怪的地方啊。我还是把我的从Excel导入到datagridview的代码发出来吧,看看是不是这出了问题:/// <summary>
/// 从Excel中导入数据到表格中
/// </summary>
/// <param name="p"></param>
/// <param name="dataGridViewX1"></param>
private void EcxelToDataGridView(string filePath, DataGridViewX dataGridViewX1)
{
string strConn;
if (filePath.EndsWith(".xls"))
{
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath +
";Extended Properties ='Excel 8.0;HDR=YES;IMEX=1'";
}
else if (filePath.EndsWith(".xlsx"))
{
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath +
";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'";
}
else
{
return;
}
OleDbConnection conn = new OleDbConnection(strConn);
try
{
conn.Open();
}
catch
{
MessageBox.Show("格式错误,请打开Excel文件");
return;
}
string SelectCommandText = "select * from [sheet1$]";
OleDbDataAdapter adapter = new OleDbDataAdapter(SelectCommandText, conn);
DataSet ds = new DataSet();
adapter.Fill(ds, "ExcelTable"); //根据DataGridView的列构造一个新的DataTable
DataTable dt = new DataTable();
foreach (DataGridViewColumn dgvc in dataGridViewX1.Columns)
{
if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell))
{
DataColumn dc = new DataColumn();
dc.ColumnName = dgvc.DataPropertyName;
//若需要限制导入时的数据类型则取消注释,前提是DataGridView必须先绑定一个数据源那怕是空的DataTable
//dc.DataType = dgvc.ValueType;
dt.Columns.Add(dc);
}
} //根据Excel的行逐一对上面构造的DataTable的列进行赋值
foreach (DataRow excelRow in ds.Tables["ExcelTable"].Rows)
{
int i = 0;
DataRow dr = dt.NewRow();
foreach (DataColumn dc in dt.Columns)
{
dr[dc] = excelRow[i];
i++;
//如果Excel里的表格的列数小于dataGridView里的列数
if (i == ds.Tables["ExcelTable"].Columns.Count)
break;
}
dt.Rows.Add(dr);
}
DataGridViewControl.CopyDTableToGrid(dataGridViewX1, dt);
DataGridViewControl.CopyDTableToGrid(CurrentGrid, dt);
conn.Close();
}
不是从别人网站上导出的,我手上有这个软件,这个软件有个功能是把数据导出到Excel的
是指select * from [sheet1$] ? 能说具体点吗?
但是实际上Excel里的表格有很多sheet。我是说呢,我读出来的数字这么奇怪,原来是第一层的,但是我的Excel显示的是sheet4做个标记,方便以后遇到同样情况的朋友。
当然不知道还能不能出现像我这么这么粗心大意的朋友