Maideen Abdul Kader Ответов: 1

Как загрузить xlsx 2016 в MSSQL 2017 с помощью хранимой процедуры в ASP.NET Пейдж?


Привет

У меня есть проблема с тем, как загрузить файл excel 2016 xlsx на сервер mssql 2017
Ранее я использовал excel 2010 и Mssql 2012. Код работает нормально (приведено ниже)

Теперь наш клиент обновляет Office 2016 и MSSql server 2017 и VS 2017

Пожалуйста, Посоветуйте Мне

Спасибо

Мейден

Что я уже пробовал:

Это Web.Config

<add name="Excel07ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"/>


хранимая процедура

ALTER PROCEDURE [dbo].[ZR_usp_ImportFromExcel07]
   @SheetName varchar(20),
   @FilePath varchar(100),
   @HDR varchar(3),
   @TableName varchar(50)
AS
BEGIN
    
	DECLARE @SQL nvarchar(1000)
	SET @SQL = 'TRUNCATE TABLE ' + @TABLENAME
	EXEC(@SQL)

    IF OBJECT_ID (@TableName,'U') IS NOT NULL
      SET @SQL = 'INSERT INTO ' + @TableName + ' SELECT * FROM OPENDATASOURCE'
    ELSE
      SET @SQL = 'SELECT * INTO ' + @TableName + ' FROM OPENDATASOURCE'
 
    SET @SQL = @SQL + '(''Microsoft.ACE.OLEDB.16.0'',''Data Source='
    SET @SQL = @SQL + @FilePath + ';Extended Properties=''''Excel 16.0;HDR='
    SET @SQL = @SQL + @HDR + ''''''')...['
    SET @SQL = @SQL + @SheetName + ']'
    EXEC sp_executesql @SQL


Также

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1

ZurdoDev

Почему это больше не работает?

1 Ответов

Рейтинг:
4

Christian Graus

Это полная катастрофа. Все, что использует sp_executesql, будет плохим. Вы усекаете динамические таблицы?

Просто считайте файл excel в виде двоичных данных и запишите его в виде большого двоичного объекта.