2
A
回答
1
我建议你通过ADODB连接使用ODBC/DSN连接到excel文件。 我发现这非常有效。
您首先创建一个ODBC数据源名称:控制面板>管理工具>数据源(ODBC)。选择“系统”选项卡并点击“添加”。从出现的驱动程序列表中选择“Microsoft Excel驱动程序”。为您的DSN指定一个名称'MYDB',然后导航xlS文件并双击进行选择。
这可以通过编程方式完成,它只是我们创建了一个dll,像5年前那样做,我仍然试图找到它的源代码。我会尽快发布其代码。
然后从你的程序,你可以连接到您的DSN,如下所示:
'declare the connection
Global MyConn As New ADODB.Connection
'open the connection
MyConn.Open "DSN=MYDB;pwd=;"
然后,您可以通过操作记录集ADODB以正常方式连接。
我希望这有助于
1
你有bulk inserting权限?
1
您可以使用bcp实用程序。将Excel文件保存为文本并将其插入。通常不需要批量插入权限即可。
1
This page有相反的代码 - 从SQL Server中提取数据并将其插入到Excel中。您只需交换连接字符串即可。
像这样:
private System.Data.OleDb.OleDbDataAdapter da ;
private System.Data.DataSet ds;
string sqlSelect="SELECT ProductId, ProductName, QuantityPerUnit, UnitPrice, UnitsInStock, GETDATE() as TimeExtracted from Products order by UnitPrice";
string sqlInsert="INSERT INTO Foo (ProductId, ProductName, QuantityPerUnit, UnitPrice, UnitsInStock, TimeExtracted) VALUES (@ProductId, @ProductName, @QuantityPerUnit, @UnitPrice, @UnitsInStock, @TimeExtracted)";
string ExtractedTableName= "ExtractedData";
private void ReadFromSource()
{
System.Console.WriteLine("Reading from Source...");
string ConnStringSource=
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + ExcelFilename + ";" +
"Extended Properties=\"Excel 8.0;HDR=yes;\""; // FIRSTROWHASNAMES=1;READONLY=false\"
using (var conn= new System.Data.OleDb.OleDbConnection(ConnStringSource))
{
da= new System.Data.OleDb.OleDbDataAdapter();
da.SelectCommand= new System.Data.OleDb.OleDbCommand(sqlSelect);
da.SelectCommand.Connection= conn;
// this tells the DA to mark all rows as newly inserted.
// upon calling da.Update() (later), all those rows will
// be inserted into the DB.
da.AcceptChangesDuringFill= false;
ds= new System.Data.DataSet();
da.Fill(ds, ExtractedTableName);
}
}
private void InsertIntoDestination()
{
System.Console.WriteLine("Inserting data into Destination...");
string ConnStringDest= "Provider=sqloledb;Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI;";
using (var conn= new System.Data.OleDb.OleDbConnection(ConnStringDest))
{
System.Data.OleDb.OleDbCommand cmd= new System.Data.OleDb.OleDbCommand(sqlInsert);
cmd.Parameters.Add("@ProductId", System.Data.OleDb.OleDbType.Integer, 4, "ProductId");
cmd.Parameters.Add("@ProductName", System.Data.OleDb.OleDbType.VarWChar, 40, "ProductName");
cmd.Parameters.Add("@QuantityPerUnit", System.Data.OleDb.OleDbType.VarWChar, 20, "QuantityPerUnit");
cmd.Parameters.Add("@UnitPrice", System.Data.OleDb.OleDbType.Currency, 8, "UnitPrice");
cmd.Parameters.Add("@UnitsInStock", System.Data.OleDb.OleDbType.SmallInt, 2, "UnitsInStock");
cmd.Parameters.Add("@TimeExtracted", System.Data.OleDb.OleDbType.Date, 8, "TimeExtracted");
da.InsertCommand= cmd;
da.InsertCommand.Connection= conn;
da.Update(ds, ExtractedTableName);
// in the event you want to update a datasource via a different DataAdapter --
// for example you want to fill from a System.Data.SqlClient.DataAdapter and
// then Update via a System.Data.Oledb.OledbDataAdapter -- then you could define
// two distinct DataAdapters. Fill the DataSet with the first DA, then Update
// with the second DA.
}
}
相关问题
- 1. 将xls文件上传到数据库的最快方法
- 2. Java - 循环访问数据库记录的有效方法
- 3. 从MYSQL数据库中选择子记录的有效方法
- 4. 从JTable到数据库插入记录的不同方式或有效方法
- 5. 将现有的MySql数据库记录传输到SqLite
- 6. 将日历记录上传到MySQL数据库
- 7. 将大量记录保存到XLS的最佳方法
- 8. 如何有效记录数据库?
- 9. 将现有数据上传到新数据库的最简单方法
- 10. EntityManager persist()方法不会将记录插入到数据库中
- 11. 如何有效地将100s到1000s的动作记录到数据库中
- 12. mySQL:最有效的方法来更新大型数据库中的记录?
- 13. 在Unity3D中记录时间序列数据的有效方法?
- 14. 从数据表中获取唯一记录的有效方法
- 15. 将1000多条记录写入数据库表的最有效方式
- 16. 上传大excel表格中记录到我的数据库
- 17. 在sqlite数据库中插入多条记录的有效方法
- 18. Java - 空指针将记录传递到数据库的异常
- 19. 将列表数据插入到C#中的mySQL数据库的有效方法#
- 20. 尝试使用类方法将文件上传到数据库
- 21. 定期将整个SQL数据库表复制到另一个[历史记录]表的最有效方法
- 22. 将输出记录到数据库中
- 23. 将记录插入数据库的通用方法
- 24. 无法添加记录到数据库
- 25. 有没有更有效的方法来找到belongs_to记录?
- 26. 将记录从一个MySQL数据库传输到另一个数据库
- 27. mysql php上传文件插入记录到数据库
- 28. 将.xls或.xlsx文件上传到数据存储时出错
- 29. 删除记录时记录/捕获的有效方法
- 30. 在数据库表上记录数据
谢谢...你可以发布一些代码,或给我一个参考链接?我真的很感激。 – 2009-05-19 11:54:52