private void SureExcel_Click(object sender, EventArgs e)
{
if (Excel.Text == "")
{
MessageBox.Show("请先导入人员名单!");
}
else
{
string kzm = System.IO.Path.GetExtension(Excel.Text);
if (kzm != ".xls")
{
MessageBox.Show("您上传的不是excel文件");
Excel.Text = "";
}
else
{
if (File.Exists(Application.StartupPath + "\\用户信息表.xls") == true)
{
int count = ConExcel1().Tables["Sheet"].Rows.Count;//就这里!数据跟实际表格数据不一样
if (count == 0)
{
MessageBox.Show("表里没有数据!");
}
else
{
progressBar1.Maximum = count;
progressBar1.Visible = true;
for (int i = 0; i < count; i++)
{
string name = ConExcel1().Tables["Sheet"].Rows[i]["姓名"].ToString();
string phone = ConExcel1().Tables["Sheet"].Rows[i]["手机"].ToString();
string pos = ConExcel1().Tables["Sheet"].Rows[i]["职位"].ToString();
string sit = ConExcel1().Tables["Sheet"].Rows[i]["座位"].ToString(); string filename = Application.StartupPath + "\\用户信息表.xls";
string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" + filename + ";Extended Properties='Excel 8.0;HDR=Yes'";
OleDbConnection oleConn = new OleDbConnection(connstr);
oleConn.Open();
string sqlStr = "insert into Sheet1(姓名,手机,职位,座位)values('" + name + "','" + phone + "','" + pos + "','" + sit + "') ";
OleDbParameter[] oleP = new OleDbParameter[]
{
new OleDbParameter("姓名",name),
new OleDbParameter("手机",phone),
new OleDbParameter("职位",pos),
new OleDbParameter("座位",sit)
};
progressBar1.Value = i;
}
progressBar1.Visible = false;
MessageBox.Show("加载完毕!");
Excel.Text = "";
}
}
}
}
}
private DataSet ConExcel1()
{
string file = Excel.Text;
string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" + file + ";Extended Properties='Excel 8.0;HDR=Yes'";//这个链接字符串是excel2003的
OleDbConnection oleConn = new OleDbConnection(connstr);
oleConn.Open();
string cmdText = "select * from [Sheet1$]";
OleDbDataAdapter sda = new OleDbDataAdapter(cmdText, oleConn);
DataSet ds = new DataSet();
sda.Fill(ds,"Sheet");
return ds;
}这个是完整代码。。EXCEL2003,600行数据放在Sheet1里,单元格格式全部是默认格式
int count = ConExcel1().Tables["Sheet"].Rows.Count;
将导入的EXCEL表写到新的EXCEL时,新表没有数据。。
难道真的是:通过数据库来访问Excel本来就不能处理复杂一点的Excel格式,它对Excel工作簿上的数据定义有严格限制,只有部分区域才能访问。这个原因?等待高手
{
if (Excel.Text == "")
{
MessageBox.Show("请先导入人员名单!");
}
else
{
string kzm = System.IO.Path.GetExtension(Excel.Text);
if (kzm != ".xls")
{
MessageBox.Show("您上传的不是excel文件");
Excel.Text = "";
}
else
{
if (File.Exists(Application.StartupPath + "\\用户信息表.xls") == true)
{
int count = ConExcel1().Tables["Sheet"].Rows.Count;//就这里!数据跟实际表格数据不一样
if (count == 0)
{
MessageBox.Show("表里没有数据!");
}
else
{
progressBar1.Maximum = count;
progressBar1.Visible = true;
for (int i = 0; i < count; i++)
{
string name = ConExcel1().Tables["Sheet"].Rows[i]["姓名"].ToString();
string phone = ConExcel1().Tables["Sheet"].Rows[i]["手机"].ToString();
string pos = ConExcel1().Tables["Sheet"].Rows[i]["职位"].ToString();
string sit = ConExcel1().Tables["Sheet"].Rows[i]["座位"].ToString(); string filename = Application.StartupPath + "\\用户信息表.xls";
string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" + filename + ";Extended Properties='Excel 8.0;HDR=Yes'";
OleDbConnection oleConn = new OleDbConnection(connstr);
oleConn.Open();
string sqlStr = "insert into Sheet1(姓名,手机,职位,座位)values('" + name + "','" + phone + "','" + pos + "','" + sit + "') ";
OleDbParameter[] oleP = new OleDbParameter[]
{
new OleDbParameter("姓名",name),
new OleDbParameter("手机",phone),
new OleDbParameter("职位",pos),
new OleDbParameter("座位",sit)
};
progressBar1.Value = i;
}
progressBar1.Visible = false;
MessageBox.Show("加载完毕!");
Excel.Text = "";
}
}
}
}
}
private DataSet ConExcel1()
{
string file = Excel.Text;
string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" + file + ";Extended Properties='Excel 8.0;HDR=Yes'";//这个链接字符串是excel2003的
OleDbConnection oleConn = new OleDbConnection(connstr);
oleConn.Open();
string cmdText = "select * from [Sheet1$]";
OleDbDataAdapter sda = new OleDbDataAdapter(cmdText, oleConn);
DataSet ds = new DataSet();
sda.Fill(ds,"Sheet");
return ds;
}这个是完整代码。。EXCEL2003,600行数据放在Sheet1里,单元格格式全部是默认格式
int count = ConExcel1().Tables["Sheet"].Rows.Count;
将导入的EXCEL表写到新的EXCEL时,新表没有数据。。
难道真的是:通过数据库来访问Excel本来就不能处理复杂一点的Excel格式,它对Excel工作簿上的数据定义有严格限制,只有部分区域才能访问。这个原因?等待高手
int count = ConExcel1().Tables["Sheet1$"].Rows.Count;//