C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中
来源:互联网 发布:淘宝如何入驻全球购 编辑:程序博客网 时间:2024/04/27 18:11
实际的开发中,我们会经常遇到数据的转化的需要,将Excel中的数据转入到SQL中,或将SQL在数据库表中的数据导入到Excel中。代码如下:
public partial class Form1 : Form { private static string _filePath = string.Empty; public Form1() { InitializeComponent(); BindUser(); } /// <summary> /// 绑定数据 /// </summary> private void BindUser() { string sql = "select * from CRMUser"; DataSet ds = DbHelperSQL.Query(sql); dataGridView1.DataSource = ds.Tables[0]; } /// <summary> /// 将Users表中的数据导入Excel中 /// </summary> private void btnSqlToExcel_Click(object sender, EventArgs e) { ExcelFile excelFile = new ExcelFile(); ExcelWorksheet sheet = excelFile.Worksheets.Add("CRMUser"); int columns = dataGridView1.Columns.Count; int rows = dataGridView1.Rows.Count; for (int j = 0; j < columns; j++) { sheet.Cells[0, j].Value = dataGridView1.Columns[j].HeaderText; } for (int i = 1; i < rows; i++) { for (int j = 0; j < columns; j++) { sheet.Cells[i, j].Value = dataGridView1[j, i - 1].Value.ToString().Trim(); } } excelFile.SaveXls("./CRMUser.xls"); MessageBox.Show("生成成功"); } /// <summary> /// 选择要向SQL数据库中导入数据的Excel文件 /// </summary> private void btnChoose_Click_1(object sender, EventArgs e) { using (OpenFileDialog dialog = new OpenFileDialog()) { dialog.Multiselect = true; if (dialog.ShowDialog() == DialogResult.OK) { try { txtPath.Text = dialog.FileName; } catch { } } } } /// <summary> /// 将Excel中的数据导入到SQL数据库中 /// </summary> private void btnExcelToSql_Click(object sender, EventArgs e) { DataSet ds = ImportFromExcel(txtPath.Text.Trim()); DataTable dt = ds.Tables[0]; try { string strInsertComm; for (int i = 0; i < dt.Rows.Count; i++) { strInsertComm = ""; strInsertComm = "Insert INTO TestExcel(ToolName,[Type],brife,Info,WebSite)"; strInsertComm += " values("; for (int j = 0; j <dt.Columns.Count; j++) { if (j > 0) { strInsertComm += ",'" + dt.Rows[i][j].ToString().Trim() + "'"; } else { strInsertComm += "'" + dt.Rows[i][j].ToString().Trim() + "'"; } } strInsertComm += ")"; //判断当插入的整条数据都不为空时才执行插入操作,避免插入空数据 if (strInsertComm != "Insert INTO TestExcel(ToolName,[Type],brife,Info,WebSite) values('','','','','')") { DbHelperSQL.ExecuteSql(strInsertComm); } } MessageBox.Show("导入成功"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } #region Excel导入SQL数据库 /// <summary> /// 获取Excel数据表列表 /// </summary> /// <returns></returns> public static ArrayList GetExcelTables(string FilePath) { //将Excel架构存入数据里 System.Data.DataTable dt = new System.Data.DataTable(); ArrayList TablesList = new ArrayList(); if (File.Exists(FilePath)) { using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + FilePath)) { try { conn.Open(); dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); } catch (Exception exp) { MessageBox.Show(exp.Message); } //获取数据表个数 int tablecount = dt.Rows.Count; for (int i = 0; i < tablecount; i = i + 2) { string tablename = dt.Rows[i][2].ToString().Trim().TrimEnd('$'); if (TablesList.IndexOf(tablename) < 0) { TablesList.Add(tablename); } } } } return TablesList; } /// <summary> /// 导入Excel数据表至DataTable(第一行作为表头) /// </summary> /// <returns></returns> public static System.Data.DataSet FillDataSet(string FilePath) { if (!File.Exists(FilePath)) { throw new Exception("Excel文件不存在!"); } ArrayList TableList = new ArrayList(); TableList = GetExcelTables(FilePath); if (TableList.Count <= 0) { return null; } System.Data.DataTable table; System.Data.DataSet ds = new DataSet(); OleDbConnection dbcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FilePath + ";Extended Properties=Excel 8.0"); try { if (dbcon.State == ConnectionState.Closed) { dbcon.Open(); } for (int i = 0; i < TableList.Count; i++) { string dtname = TableList[i].ToString(); try { OleDbCommand cmd = new OleDbCommand("select * from [" + dtname + "$]", dbcon); OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); table = new DataTable(dtname); adapter.Fill(table); ds.Tables.Add(table); } catch (Exception exp) { MessageBox.Show(exp.Message); } } } finally { if (dbcon.State == ConnectionState.Open) { dbcon.Close(); } } return ds; } /// <summary> /// Excel导入数据库 /// </summary> /// <returns></returns> public static DataSet ImportFromExcel(string FilePath) { return FillDataSet(FilePath); } #endregion }
- C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中
- C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中
- C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中
- C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中
- C# web 将Excel表中数据导入SQL数据库
- 将Excel文件数据导入数据到SQL数据库中
- 如何将EXCEL数据导入到SQL数据库中来
- 将Excel文件中的数据导入SQL数据库中
- 将excel中数据导入到sql数据库,,从数据库导出到excel中
- 将Excel数据导入到数据库中
- 将excel中数据导入数据库
- 将excel数据导入到数据库中
- 使用C#将Excel文件中数据导入SQL Server数据库
- c# 将dataset中的数据导入到sql数据库中
- 怎样将Excel中的数据导入到SQL Server 2000数据库中
- 急~~如何将EXCEL里面的数据导入SQL—SERVER数据库中
- 将Excel中的数据导入到SQL Server 2000数据库中
- 怎样将Excel中的数据导入到SQL Server 2000数据库中
- Redmine安装
- MOSS 中出现 unexpect error
- VC如何查看全局变量的值
- QT:Qsocket长连接的实现(多线程服务器)
- D3DFVF_XYZ和D3DFVF_XYZRHW的区别
- C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中
- hdoj2053
- inverse与casecade
- TWAIN协议(Toolkit Without An Interesting Name)
- 我们需要code review
- 核心竞争力不是钱和房子,是在关键的岗位上,要有自己的人!
- HDOJ 1007 Quoit Design
- art.dialog.art 中,将子页面窗口中的值传递给父框架中
- Linux内核模块