如何把Excel表中数据导入数据库

如何把Excel表中数据导入数据库,第1张

1、直接用Sql语句查询

2、先用excle中的数据生成xml文件,再把xml导入数据库

第一种方法(方法二以后再试),找到联机丛书里实现此功能的Sql语句如下:

SELECT

FROMOpenDataSource('MicrosoftJetOLEDB40',

'DataSource="c:Financeaccountxls";UserID=Admin;Password=;Extendedproperties=Excel50')xactions

语句是有了,但我还是试了很久,因为各个参数具体该怎么设置它没有说。Data

Source就是excel文件的路径,这个简单;UserId、Password和Extended

properties这三个属性我改成了各种各样的与本机有关的用户名、密码以及excel版本都不对,最后用上面例子里的值“User

ID=Admin;Password=;Extended

properties=Excel

50”才成功了,晕啊;最后个“xactions”更是查了很多资料,其实就仅仅是excel文件里所选的工作表名而已,怪我对excel不够熟悉了,另外注意默认的Sheet1要写成[Sheet1$]

最后,看看我成功的测试

数据库里建好一个表testTable_1,有5个字段id,

name,

date,

money,

content,C盘下book1xls文件的sheet1工作表里写好对应的数据并设好数据类型,执行如下插入语句:

insertintotestTable_1([name],[date],[money],[content])

Select[姓名],[日期],[金额],[内容]

FROMOpenDataSource('MicrosoftJetOLEDB40',

'DataSource="C:Book1xls";

UserID=Admin;Password=;Extendedproperties=Excel50')[Sheet1$]

select里的列名我一开始用代替,但发现输出顺序与我预期的不同,是“金额、内容、日期、姓名”,不知道具体有什么规律,就老老实实写名字了。 *** 作成功

回过头来看看市场部的要求,假设在我这张表里实现,可以先判断如excel里存在与记录相同的name字段(name要唯一非空)时就删除记录,之后再插入,这样简单,但自增的id字段会因为插入而改变,那是不行的了。可行的方法是先读出excel里全部记录,然后用游标一条条分析,如果存在这个name就更新否则就插入。OK,下次就不用让他们再对着文档一条条Update了

我给你一段代码吧:其实网站里面有很多的代码:

public DataSet ExecleDs(string filenameurl, string table)

{

string strConn = "Provider=MicrosoftJetOleDb40;" + "data source=" + filenameurl + ";Extended Properties='Excel 80; HDR=YES; IMEX=1'";

OleDbConnection conn = new OleDbConnection(strConn);

connOpen();

DataSet ds = new DataSet();

OleDbDataAdapter odda = new OleDbDataAdapter("select from [Sheet1$]", conn);

oddaFill(ds, table);

return ds;

}

protected void Button8_Click(object sender, EventArgs e)//确定添加键

{

string strConn = "Data Source=;DataBase=gongnuan;Uid=sa;Pwd=sa";

if (FileUpload1HasFile == false)//HasFile用来检查FileUpload是否有指定文件

{

ResponseWrite("<script>alert('请您选择Excel文件')</script> ");

return;//当无文件时,返回

}

string IsXls = SystemIOPathGetExtension(FileUpload1FileName)ToString()ToLower();//SystemIOPathGetExtension获得文件的扩展名

if (IsXls != "xls")

{

ResponseWrite("<script>alert('只可以选择Excel文件')</script>");

return;//当选择的不是Excel文件时,返回

}

SqlConnection cn = new SqlConnection(strConn);

cnOpen();

string filename = FileUpload1FileName; //获取Execle文件名 DateTime日期函数

string savePath = ServerMapPath(("~\\upfiles\\") + filename);//ServerMapPath 获得虚拟服务器相对路径

FileUpload1SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上

DataSet ds = ExecleDs(savePath, filename); //调用自定义方法

DataRow[] dr = dsTables[0]Select(); //定义一个DataRow数组

int rowsnum = dsTables[0]RowsCount;

if (rowsnum == 0)

{

ResponseWrite("<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对用户进行提示

}

else

{

for (int i = 0; i < drLength; i++)

{

string pininputdate = dr[i]["excel列名"]ToString();//日期 excel列名名称不能变,否则就会出错

string insertstr = "insert语句";

SqlCommand cmd = new SqlCommand(insertstr, cn);

try

{

cmdExecuteNonQuery();

}

catch (MembershipCreateUserException ex) //捕捉异常

{

ResponseWrite("<script>alert('导入内容:" + exMessage + "')</script>");

}

}

ResponseWrite("<script>alert('Excle表导入成功!');location='defaultaspx'</script>");

}

cnClose();

}

你可以好好研究下

第一步:在ghost xp系统中启动Access,在向导的提示下建立一个“空数据库”以便用于存放从Excel中导入的数据

第二步:打开要导入数据的数据库,切换到“外部数据”选项卡,选择“Excel”按钮,打开“导入数据”对话框。

第三步:在“选择数据源”对话框中,可以根据需要选择数据源,数据源就是我们之前准备好的“成绩表xlsx”表格文件。同时选择“将数据源导入当前数据库的新表中”。

第三步:在“选择数据源”对话框中,可以根据需要选择数据源,数据源就是我们之前准备好的“成绩表xlsx”表格文件。同时选择“将数据源导入当前数据库的新表中”。

第五步:勾选“第一行含有列标题”选项,以免导入向导将表格第一排的标题也当做数据导入进来。点击“下一步”按钮

第六步:分别选择每一个数据列,并指定导入数据库后的数据类型。中文部分建议设置为“文本”,数字部分可以设置为“整数型”或“双精度型”。然后点击“下一步”按钮

第七步:接下来为数据表设置主键。主键是数据库中一种特殊的列,列的内容是一组自动增长的数字,如果没有实际的需要,我们选择“不要主键”并点击“下一步”按钮。

第八步:为即将生成的新标取一个名字。例如“学生成绩数据”,并点击“完成”按钮,结束导入。

这样的问题很多了

你需要一个放一个fileupload控件 用来上传excel ,还需要在项目里建一个文件夹用来存放你要上传的excel 。因为系统总是先把文件传到服务器上再进行 *** 作,而不是对每个人的桌面excel直接 *** 作。

using SystemDataSqlClient;

using SystemDataOleDb; //  要加这两句

public DataSet ExecleDs(string filenameurl, string table) // 这个函数就是将上传的excel读入dataset

{

string strConn = "Provider=MicrosoftJetOleDb40;" + "data source=" + filenameurl + ";Extended Properties='Excel 80; HDR=YES; IMEX=1'"; // 这里excel03 如要该成07版再问我或者百度

string strcom = "select from [Sheet1$]";

OleDbConnection conn = new OleDbConnection(strConn);

connOpen();

DataSet ds = new DataSet();

OleDbDataAdapter odda = new OleDbDataAdapter(strcom, conn);

oddaFill(ds, table);

return ds;

}

protected void Button4_Click(object sender, EventArgs e) // 你的那个确定按钮

{

SqlConnection con = new SqlConnection();

conConnectionString = "server='CWJMXT-14\\SQLEXPRESS';database='E-test';uid='sa';pwd=‘'" ; // 你自己的数据库连接

if (FileUpload1HasFile == false)//HasFile用来检查FileUpload是否有指定文件

{

ResponseWrite("<script>alert('请您选择Excel文件')</script> ");

return;//当无文件时,返回

}

string IsXls = SystemIOPathGetExtension(FileUpload1FileName)ToString()ToLower();//SystemIOPathGetExtension获得文件的扩展名

if (IsXls != "xls")

{

ResponseWrite("<script>alert('只可以选择Excel文件')</script>");

return;//当选择的不是Excel文件时,返回

}

conOpen();

string filename = FileUpload1FileName; //获取Execle文件名 DateTime日期函数

// Label2Text = filename;

string savePath = ServerMapPath(("~\\upfiles\\") + filename);//ServerMapPath 获得虚拟服务器相对路径

FileUpload1SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上

DataSet ds = ExecleDs(savePath, filename); //调用自定义方法

DataRow[] dr = dsTables[0]Select(); //定义一个DataRow数组

int rowsnum = dsTables[0]RowsCount;

if (rowsnum == 0)

{

ResponseWrite("<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对用户进行提示

}

else

{

for (int i = 0; i < drLength; i++)

{

//string pininputdate = dr[i]["]ToString();//日期 excel列名名称不能变,否则就会出错

string insertstr = "insert into item1(试题组别,试题类型,试题题目,选项A,选项B,选项C,选项D,正确答案,随机或必出)values('" + dr[i][0]ToString() + "','" + dr[i][1]ToString() + "','" + dr[i][2]ToString() + "','" + dr[i][3]ToString() + "','" + dr[i][4]ToString() + "','" + dr[i][5]ToString() + "','" + dr[i][6]ToString() + "','" + dr[i][7]ToString() + "','" + dr[i][8]ToString() + "')"; //这里就是具体怎么样一行一行将dataset中的数据导入sql的 你也可以加一些其他判断什么的。 SqlCommand cmd = new SqlCommand(insertstr, con);

try

{

cmdExecuteNonQuery();

}

catch (MembershipCreateUserException ex) //捕捉异常

{

ResponseWrite("<script>alert('导入内容:" + exMessage + "')</script>");

}

}

ResponseWrite("<script>alert('Excle表导入成功!');location='itemmaintainaspx'</script>");

}

conClose();

}

*** 作步骤如下:

准备数据:在excel中构造出需要的数据

2将excel中的数据另存为文本文件(有制表符分隔的)

3将新保存到文本文件中的数据导入到plsql中

在plsql中选择tools-->text importer,在出现的窗口中选择"Data from Textfile",然后再选择"Open data file",

在d出的文件选择框中选中保存有数据的文本文件,此时将会看到data from textfile中显示将要导入的数据

4在configuration中进行如下配置

注:如果不将"Name in header"勾选上会导致字段名也当做记录被导入到数据库中,从而导致数据错误

5点击data to oracle,选择将要导入数据的表,并在fields中将文本中的字段与表中的字段进行关联

6点击import按钮进行导入

7查看导入的数据

用ASP导入到数据库里是非常简单的事。不过在XP下,就不能成功。总是报错。不是你的代码写错了。而是其他原因,例如驱动或者缺少什么组建。你可以在win2000/2003下测试。应该可以成功。

1 准备Excel导入数据

2 把Excel文件另存为(文本文件(制表符分隔)(txt))

3 把新生成的studenttxt文件导入到plsql

打开plsql连接到要导入的oracle数据库再打开Tools --> Text importer --> Open data file 选择要导入的txt文件

4 设置导入数据表结构

新生成的表字段会对应Excel文件第一行标题,但新生成的表字段Type需要设置,可以设置为nvarchar (导入数据为临时数据,如果需要可以后期再作类型变换处理)

5 在Data to Oracle Tab中设置导入的表及相应的栏位

1:导入的语句怎么写?

insert into table

select

from OpenRowSet('microsoftjetoledb40','Excel 80;HDR=yes;database=c:\1xls;','select from [table$]')

这是全字段导入,如果你想导入部分字段则把 改成你要导入的字段

2对excel中的数据有什么要求?

例如:能否有空格?

同一列的数据能否有重复的?

excel没什么特别的要求,类似能否有重复,空格之类的则是看你的想导入的那个数据库的设计了

3数据库如何设计?

例如:数据库中的字段类型以及名称是否应该和excel中的保持一致?

默认的是怎样导入呢?是不是表中的第一列默认导入到数据库中的第一个字段里?

如果你是用select 方式导入的话 可以不用名称对应,如果是 select 字段的则最好是对应,对类型没特殊要求,默认第一列为第一个字段

---------------------------------------------------------------

建议:SQL server是有导入导出工具的,你直接用那个比较好

以上就是关于如何把Excel表中数据导入数据库全部的内容,包括:如何把Excel表中数据导入数据库、C#语言在网页上将excel中的内容导入到SQL数据库表中、Excel怎么将填入的数据导进数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9339787.html

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

发表评论

登录后才能评论

评论列表(0条)

保存