其实我现在在用ASP.NET做一个系统,要求将一个Excel表导入到数据库中问题是在.net 2.0框架下,如何将一个Excel表导入到SQL Server数据库呢?
这其中可能涉及到这么几个问题:
1. 因为Excel表中第一行可能是标题,从第二行开始才是数据
2. 将一个Excel表倒入到多个数据表中
3.Excel表中的数据类型可能同基本表中的数据类型不一致。
希望热心的朋友们能够帮助我,我将非常感激。
Excel的导入一定给客户规定统一的模板,这样才能方便做业务处理.
我是这样做的.
首先将Excel的所有Sheet页全都读出来,请用户选择要处理的Sheet的页,获取Sheet页代码如下
Code
/ //
/// 获取Excel的表名[Sheet1$]
///
/// Excel的路径
/// DataTable
public static DataTable GetExcelTableName(string path)
{
var conn = GetConnection(path);
var dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
conn.Close();
return dt;
}
返回的DataTable可以绑定到Listbox控件中,
当用户选择好要处理Sheet页后,将选择的Sheet页名称输入到下面的方法,以获取所选Sheet页的内容:
Code
///
/// 根据Excel的表名,获取相应表的内容
///
/// Excel的表名
/// Excel路径
///
public static DataTable GetExcelTable(string tableName,string path)
{
var sql = string.Format("SELECT * FROM [{0}]", tableName);
var conn = GetConnection(path);
var myCommand = new OleDbDataAdapter(sql, conn);
var myDataSet = new DataSet();
myCommand.Fill(myDataSet);
return myDataSet.Tables[0];
}
返回一个DataTable,这样你就可以根据自己的业务来处理DataTable中的数据了.
完整的代码如下:
Code
asdsadsadsa
.NET有专门支持这个的类和接口,你可以MSDN一下
1.建立与excel表的连接,获得工作表ObjWorkSheet,
using Microsoft.Office.Interop.Excel;
Microsoft.Office.Interop.Excel.Application ObjExcel = new Microsoft.Office.Interop.Excel.Application();
Workbook ObjWorkBook;
Worksheet ObjWorkSheet = null;
ObjWorkBook = ObjExcel.Workbooks.Open(sPathName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
foreach (Microsoft.Office.Interop.Excel.Worksheet sheet in ObjWorkBook.Sheets)
{
if (sheet.Name.ToLower() == sheetName.ToLower())
{
ObjWorkSheet = sheet;
break;
}
}
if (ObjWorkSheet == null)
throw new Exception(string.Format("{0} not found!!", sheetName));
2.得到单元格中的内容,注意i从1开始,j从1开始计,i==1时,对应字段名称所在的行
Range cell = (Range)ObjWorkSheet.Cells[i, j];
单元格的值为cell.value2
3.设置字段类型需要做一个交互界面,你先获得并显示字段名称,然后对其设置类型
4.由交互界面获得字段和字段类型,利用你的编程接口将excel的数据导入数据库
我的是用oracle数据库的,与你的接口不同,所以只能说这么多了.
三类方式
1、oledb将excel文件当成数据库的方式来读,但是限制比较多。用于简单的读。
2、excel com组件,功能强,服务端要装excel,可能会遇到excel进程释放的问题,我一般将处理excel的部分放到单独的方法中,且及时调用退出方法,以及回收资源,在调用该方法的方法中手动调用GC回收资源。
3、二进制读,读方面有不错的开源项目,写我暂时没发现太好的开源项目。
楼上说的比较全
我一般是用第一种方法 这种方法效率高些