excel格式文件怎么导入至mdb文件?

excel格式文件怎么导入至mdb文件?,第1张

思路很简单,就是先依次获取Excel中表的表名,然后再将Excel表的数据导入到内存以DataTable格式存在,最后再把dataTable数据导入到Mdb数据库文件中。最后实现的功能可以使Excel多表进行导入,如果Mdb数据库文件中已有新建的表, *** 作是先删除数据库中的已存在表,再重新创建表,导数据。

源码:

using Systemusing System.Collections.Genericusing System.ComponentModelusing System.Datausing System.Drawingusing System.Linqusing System.Textusing System.Threading.Tasksusing System.Windows.Formsusing System.Data.OleDb

namespace TestK

{

public partial class Form1 : Form    {

public Form1()

{

InitializeComponent()

}

public int tableNameNum = 0   //记录Excel中所有表的数量        public OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0Data Source=C:\\Users\\CES\\Desktop\\CES.mdb")

//建立与数据库文件CES.mdb的连接

//打开以.xls或者.xlsx结尾的文件        private void button1_Click(object sender, EventArgs e)

{

OpenFileDialog dlg = new OpenFileDialog()   //创建窗体            dlg.Filter = "Excel文件 (*.xls*.xlsx)|*.xls*.xlsx"    //浏览过滤出以.xls或者.xlsx结尾的文件            if(dlg.ShowDialog() ==  DialogResult.OK)

{

string filePath = dlg.FileName  //获取打开文件的路径                this.textBox1.Text = filePath

}

}

//获取Excel中所有表的表名        public string[] GetTableName(string excelFilename)

{

//建立与指定Excel文件的连接            string connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0Data Source={0}Jet OLEDB:Engine Type=35Extended Properties=Excel 8.0Persist Security Info=False", excelFilename)

string[] tableName = new string[20] //存储Excel中所有表的表名            string temp  //中间变量

using (System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection(connectionString))

{

connection.Open()

//获取数据库架构信息,包括列、主键、表等信息                DataTable table = connection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null)

for (int i = 0 i < table.Rows.Counti++ )

{

temp = table.Rows[i]["Table_Name"].ToString()  //获取Excel中的表名                    tableName[i] = temp.Replace("$", "")   //因为获取的表名最后会有$符号,所以要替换                }

tableNameNum = table.Rows.Count

connection.Close()

}

return tableName

}

//获取Excel中每张表的数据,以datatable类型返回        public DataTable GetExcelTable(string excelFilename,string tableName)

{

//建立与指定Excel文件的连接            string connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0Data Source={0}Jet OLEDB:Engine Type=35Extended Properties=Excel 8.0Persist Security Info=False", excelFilename)

DataSet ds = new DataSet()  //数据集            //using中声明的对象connection,在using语句块结束后会自动释放            using (System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection(connectionString))

{

connection.Open()

//获取数据库架构信息,包括列、主键、表等信息                DataTable table = connection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null)

string strExcel = "select * from " + "[" + tableName + "$]"

//打开数据链接,得到一个数据集                OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, connectionString)

//在数据集中查询表名为tableName的表,然后把其数据在装入数据集ds中                adapter.Fill(ds, tableName)

connection.Close()

}

return ds.Tables[tableName]//以datatable类型返回数据集ds中表名为tableName的表        }

//判断在数据库中,指定表名的表是否存在        public bool TableExists(string table)

{

bool rythm

connection.Open()

//读取表名为table的表的行数信息            rythm = connection.GetSchema("Tables", new string[4] { null, null, table, "TABLE" }).Rows.Count > 0

connection.Close()

return rythm

}

//如果在建表之前,数据库已经存在该表,那么首先要先删除此表        public void DeleteTable(string tableName)

{

string sql = "drop table "+tableName+""

connection.Open()

OleDbCommand cmd = new OleDbCommand(sql, connection)

cmd.ExecuteNonQuery()

connection.Close()

}

//中间类型为dataTable的表数据转换到数据库mdb文件中        public bool dataTableToMdb(string excelPath,string tableName)

{

//获取Excel中表的数据            DataTable dt = GetExcelTable(excelPath,tableName)

//表中数据大于等于两行,数据转入格式才是正确的            if (dt.Rows.Count >= 2)

{

string[] cloumnName = new string[50]

//获取Excel中表的所有列名                for (int i = 0 i < dt.Columns.Count i++)

{

cloumnName[i] = dt.Rows[0][i].ToString()

}

//在mdb数据库文件中创建表                string sql = "create table " + tableName + " (" + cloumnName[0] + " varchar null)"

connection.Open()

OleDbCommand cmd = new OleDbCommand(sql, connection)

cmd.ExecuteNonQuery()

//在mdb数据库文件中,给已创建好的表添加好所有列                    for (int i = 1 i < dt.Columns.Count i++)

{

sql = "alter table " + tableName + " add " + cloumnName[i] + " varchar null"

cmd = new OleDbCommand(sql, connection)

cmd.ExecuteNonQuery()

}

//在mdb数据库文件中,给已创建好的表加入数据                            for (int t = 1 t < dt.Rows.Count t++)

{

sql = "insert into " + tableName + " values('"

for (int k = 0 k < dt.Columns.Count k++)

{

if (k != dt.Columns.Count - 1)

{

sql = sql + dt.Rows[t][k].ToString() + "','"

}

else                                    {

sql = sql + dt.Rows[t][k].ToString() + "')"

}

}

cmd = new OleDbCommand(sql, connection)

cmd.ExecuteNonQuery()

}

connection.Close()

return true

}

else            {

MessageBox.Show("Excel中"+ tableName +"表的原始数据格式不正确!")

}

return false

}

private void button2_Click(object sender, EventArgs e)

{

int flag = 1  //判断由Excel表导入到Mdb是否成功的标记变量                      

在 Excel 中录入好数据以后,可能会有导入数据库的需求,这个时候就需要利用一些技巧导入。接下来是我为大家带来的如何将excel表导入数据库的 方法 ,希望对你有用。

将excel表导入数据库的方法

Excel导入数据库步骤1:对于把大量数据存放到数据库中,最好是用图形化数据库管理工具,可是如果没有了工具,只能执行命令的话这会是很费时间的事。那我们只能对数据进行组合,把数据组成insert语句然后在命令行中批量直行即可。

Excel导入数据库步骤2:我们对下面数据进行组合,这用到excel中的一个功能。

在excel中有个fx的输入框,在这里把组好的字符串填上去就好了。

注:字符串1 &A2 &字符串2 &...

A2可以直接输入,也可以用鼠标点对应的单元格。

Excel导入数据库步骤3:每个字符串之间用 &符号进行连接。下面是第一条连接字符串

="insert into tavern values('"&A2&"','"&B2&"','"&C2&"','"&D2&"')"

写好后按回车键Enter就能组合出对应的字符串了。

insert into tavern values('jw_agi','曙光','0','1')

Excel导入数据库步骤4:组好第一行的字符串后,把鼠标放到单元格右下方,出现加粗的十字,单击按下(别松开),一直往下拉,直到最后一行再放开就行了。

5这样我们就把insert语句都整理好了,接下来就是大家把这些语句批量执行就可以了。

>>>下一页更多精彩“将EXCEL表格数据导入进CAD中的方法”


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10659592.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存