Close window

printed by () 06/04/2025 20:58:54
FAQ#: 10001482 / Получение данных из файла Excel в SQL Server
FAQ-Info:
Category: !SalesWorks::Скрипты
Votes: 2
Result: 100.00 %
Last update: 03/28/2019 09:28:58

Keywords: Excel;SQL


Symptom: (public)

Problem: (public)
Есть потребность выгрузки даных с Excel в SQl базу.

Solution: (public)

CASE 1: Получение данных из файла Excel в SQL Server
Пожалуйста, следуйте инструкциям ниже:

  • 1) Загрузите 64-разрядную версию (AccessDatabaseEngine_X64.exe) с «Microsoft Access Database Engine 2010 Reistributable», URL-адреса ниже:
http://www.microsoft.com/downloads/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en&WT.mc_id=soc-n-[TR]-loc-[Services]-[farukc]
  • 2) Установите AccessDatabaseEngine_X64.exe на вашем компьютере с SQL Server.
  • 3) Откройте новое «Окно запросов» в SQL Server Management Studio (SSMS) после подключения к ядру SQL Server и введите приведенные ниже команды T-SQL.:
USE [master]
GO
sp_configure 'show advanced options', 1
GO
RECONFIGURE WITH OverRide
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE WITH OverRide
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO
 
  • 4) Теперь попробуйте выполнить запрос ниже :
 
    SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\temp\test.xls', [Sheet1$])

или
DECLARE @RC int

DECLARE @server     nvarchar(128)
DECLARE @srvproduct nvarchar(128)
DECLARE @provider   nvarchar(128)
DECLARE @datasrc    nvarchar(4000)
DECLARE @location   nvarchar(4000)
DECLARE @provstr    nvarchar(4000)
DECLARE @catalog    nvarchar(128)
 
-- Set parameter values
SET @server =     'EXCELLINK'
SET @srvproduct = 'Excel'
SET @provider =   'Microsoft.ACE.OLEDB.12.0'
SET @datasrc =    'D:\Desktop\text.xlsx'
SET @provstr =    'Excel 12.0'
 
EXEC @RC = [master].[dbo].[sp_addlinkedserver] @server, @srvproduct, @provider,
@datasrc, @location, @provstr, @catalog
 
USE kfi_geo;
GO
SELECT *  FROM EXCELLINK...[Sheet1$];
GO

    
CASE 2: Извлечение данных из файла Excel в  .NET приложении
  • 1) Скачать 64bit версию (AccessDatabaseEngine_X64.exe) of our "Microsoft Access Database Engine 2010 Redistributable" from the URL below :
http://www.microsoft.com/downloads/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en
  • 2) Установите AccessDatabaseEngine_X64.exe на вашем компьютере x64 (вероятно, это будет ваш веб-сервер, на котором будет размещаться ваше приложение ASP.NET в 64-битном пуле приложений, или сервер, на котором вы будете запускать службу .NET Windows как 64-битную и т. Д.)
 
  • 3) Используйте System.Data.OleDBConnection со строкой подключения ниже:

       OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\\temp\\test.xls;Extended Properties=\"Excel 12.0;HDR=YES;\"");

P.S 1. Если вы собираетесь развернуть это приложение на компьютере без поставщика ACE OLEDB, не забудьте, что вам нужно установить «Microsoft Access Database Engine 2010 Redistributable» на целевой компьютер.
P.S 2. Если на компьютере установлен 32-разрядный Office 2010, вы не можете установить 64-разрядное «Microsoft Access Database Engine 2010 Redistributable».