日期:2014-05-18  浏览次数:20814 次

读取Excel,怎么存为数据库格式文件?
本人刚接触数据库,想将一个Excel的数据提取出来,存为一个数据库格式的文件,便于以后的随时调用。但“存为一个数据库格

式的文件”这一步完全不会。是要新建一个数据库文件(如Access),然后导入到这个文件;还是可以在代码中动态创建一个数

据库文件呢?

另外用什么格式的数据库文件操作起来比较简单呢?

导入数据库的知识点有什么?

本人不需要代码,只需要大家指点我一个学习的知识点方向。

------解决方案--------------------
你读取后,可以使用ODBC,或者OLE这些方式,来操作相应的数据
你先要新建一个数据库,然后建一张表,然后再在表中添加一条条的数据
------解决方案--------------------
如果Excel的数据是规则的(没有合并行,合并列之类的),先在数据库中建表,再用程序读取excel中的sheet数据(可以把excel也当成一个表建,直接进行查询),再一行一行的插入到数据库表中。
------解决方案--------------------
创建数据库的方法
http://dotnet.aspx.cc/file/Create-Access2010-Accdb-File.aspx

http://dotnet.aspx.cc/article/89137097-0313-4197-aebf-116e391e354a/read.aspx

------解决方案--------------------
FileInfo excel = new FileInfo(saveFileName);
if (excel.Extension == ".xls")
{
//此连接只能操作Excel2007之前(.xls)文件
strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + saveFileName + ";Extended Properties='Excel 8.0;'";
}
else
if (excel.Extension == ".xlsx")
{
//strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + FileFullPath + ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'"; //此连接可以操作.xls与.xlsx文件 其中HDR=NO; IMEX=1 参数为读取EXCEL文件时不把第一行作为DATATABLE的列
//此连接可以操作.xls与.xlsx文件
strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + saveFileName + ";Extended Properties='Excel 12.0;'";
}

//数据库操作对象声明
OleDbConnection conn = new OleDbConnection(strConn);
OleDbCommand objCmdC = new OleDbCommand();
OleDbCommand objCmdI = new OleDbCommand();
objCmdI.Parameters.Clear();
//OleDbParameterCollection para = new OleDbParameterCollection(null);

//拼装 创建表和插入数据的sql语句

String strCreateTable = @"CREATE TABLE Sheet1(";
String strInsertTable = "INSERT INTO Sheet1(";
String strInsertValues = ") VALUES (";
for (int i = 0; i<dataGridView.ColumnCount; i++)
{
strCreateTable += dataGridView.Columns[i].HeaderText + " nvarchar,";
strInsertTable += dataGridView.Columns[i].HeaderText + ",";
strInsertValues += "@Field" + i + ",";
objCmdI.Parameters.Add(new OleDbParameter("@Field" + i, OleDbType.VarChar));


}
if (strCreateTable.EndsWith(","))
{
strCreateTable = strCreateTable.Substring(0,strCreateTable.Length - 1);
}
strCreateTable = strCreateTable + ")";
if(strInsertTable.EndsWith(","))
{
strInsertTable = strInsertTable.Substring(0,strInsertTable.Length-1);
}
if (strInsertValues.EndsWith(","))
{
strInsertValues = strInsertValues.Substring(0, strInsertValues.Length - 1);
}

strInsertTable = strInsertTable + strInsertValues + ")";



try
{

conn.Open();
objCmdC.Connection = conn; 
objCmdI.Connection = conn;


//建立表结构
objCmdC.CommandText = strCreateTable.ToString();