110,567
社区成员
发帖
与我相关
我的任务
分享
private void button1_Click(object sender, System.EventArgs e)
{
if (filename.Trim() == "")
{
MessageBox.Show("请选择要导入数据库的Excel文件! ", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (tablename.Trim() == "")
{
MessageBox.Show("请选择要导入到的数据库表! ", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
String source = null;
OdbcConnection conn = null;
try
{
source = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" + filename ;
conn = new OdbcConnection(source);
conn.Open();
}
catch
{
try
{
source = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + filename;
conn = new OdbcConnection(source);
conn.Open();
}
catch
{
MessageBox.Show("请确认此文件没有被其它程序打开!");
return;
}
}
try
{
string Excelsql_Count="select count(*) from [Sheet1$]";
if (textBox2.Text.Trim() != "")
Excelsql_Count = "select count(*) from [" + textBox2.Text.Trim() + "$]";
OdbcCommand cmd1 = new OdbcCommand(Excelsql_Count, conn);
int count = int.Parse(cmd1.ExecuteScalar().ToString());//不算第一行
progressBar1.Value = 0;
progressBar1.Maximum = count;
string sql = "select * from [Sheet1$]";
if (textBox2.Text.Trim() != "")
sql = "select * from [" + textBox2.Text.Trim() + "$]";
OdbcCommand cmd = new OdbcCommand(sql, conn);
OdbcDataReader read = cmd.ExecuteReader();
try
{
while (read.Read())
{
..................................
selectcmd.CommandText = "insert into " + tablename + "(" + zdm + ") values(" + zdz + ")";
selectcmd.ExecuteNonQuery();
progressBar1.Value = progressBar1.Value + 1;
progressBar1.Update();
............................................................
i++;
}
tx.Commit();
progressBar1.Value = progressBar1.Maximum;
progressBar1.Update();
MessageBox.Show("导入完毕! ", "导入", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception e1)
{
tx.Rollback();
tx.Dispose();
MessageBox.Show("第" + i + "行导入失败!错误: " + e1.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
read.Close();
conn.Close();
sqlConnection1.Close();
}
}
catch(Exception e1)
{
MessageBox.Show("发生错误: " + e1.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
string filename = "";
if (DialogResult.OK == saveFileDlg.ShowDialog())
{
filename = saveFileDlg.FileName;
//execl 导出
String source = null;
OdbcConnection conn = null;
try
{
source = "Driver={Microsoft Excel Driver (*.xls)};FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\""+filename +"\";DBQ=" + filename ;
conn = new OdbcConnection(source);
conn.Open();
}
catch
{
try
{
source = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\""+filename +"\";DBQ=" + filename ;
conn = new OdbcConnection(source);
conn.Open();
}
catch
{
MessageBox.Show("请确认此文件没有被其它程序打开!");
return;
}
}
if (dataSet1.Tables.Count <= 0) return;
try
{
string s = "";
string f = "";
string[] numlx = new string[] { "System.Int32", "System.Int16", "System.Int64", "System.Decimal", "System.Single", "System.Double" };
for (int i = 0; i < dataSet1.Tables[0].Columns.Count; i++)
{
if (numlx.Contains(dataSet1.Tables[0].Columns[i].DataType.ToString()))
{
s = s + ",[" + dataSet1.Tables[0].Columns[i].ColumnName + "] NUMBER";
}
else
{
s = s +",[" +dataSet1.Tables[0].Columns[i].ColumnName + "] TEXT";
}
f = f + ",[" + dataSet1.Tables[0].Columns[i].ColumnName+"]";
}
s = "CREATE TABLE " + dataSet1.Tables[0].TableName + "(" + s.Substring(1) + ")";
f = "insert into " + dataSet1.Tables[0].TableName + "(" + f.Substring(1) + ") values(";
OdbcCommand cmd1 = new OdbcCommand(s, conn);
cmd1.ExecuteNonQuery();
foreach (DataRow dr in dataSet1.Tables[0].Rows)
{
string sz = "";
for (int i = 0; i < dataSet1.Tables[0].Columns.Count; i++)
{
if (dr[i] != DBNull.Value)
{
sz = sz + ",'" + dr[i].ToString() + "'";
}
else
{
sz = sz + ",null";
}
}
sz = sz.Substring(1) + ")";
cmd1.CommandText = f + sz;
cmd1.ExecuteNonQuery();
}
MessageBox.Show("导出完毕! ", "导出", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch(Exception e1)
{
MessageBox.Show("发生错误: " + e1.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
conn.Close();
}
}