powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / импорт из Excel в MS SQL
14 сообщений из 14, страница 1 из 1
импорт из Excel в MS SQL
    #34014382
Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,
пожалуйста помогите,
проблема - есть .xls файл (таблица большая), как ее перенести в MS SQL?
Если не трудно укажите ссылку на код.
С Уважением,
Alex
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34014544
Guest112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OdbcConnection olecon = new OdbcConnection();
olecon.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ="+textBox1.Text+";";

//Extended Properties=Excel 8.0;HDR=Yes;IMEX=1
olecon.Open();
string str = "Select * from [Лист1$]";
OdbcCommand comm = new OdbcCommand(str, olecon);

OdbcDataReader reader = comm.ExecuteReader();
try
{
while (reader.read())
{
}
}
catch(Exception err)
{
}
Finally
{
if(reader!=null){reader.close();}
olecon.close();
}
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34015301
Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OdbcConnection olecon = new OdbcConnection();
olecon.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ="+textBox1.Text+";";

//Extended Properties=Excel 8.0;HDR=Yes;IMEX=1
olecon.Open();
string str = "Select * from [Лист1$]";
OdbcCommand comm = new OdbcCommand(str, olecon);

OdbcDataReader reader = comm.ExecuteReader();
try
{
while (reader.read())
{
}
}
catch(Exception err)
{
}
Finally
{
if(reader!=null){reader.close();}
olecon.close();
}
Спасибо за код,
если можно - целиком рабочую версию кода.
( есть .xls файл (таблица) - как получить "анлогичную" таблицу в MS SQL?)
С Уважением,
Alex
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34015515
Guest112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а собссна ничего сложного дальше
открываешь коннекшн к своей базе
string connectionString="твой коннект";
SqlConnection sqlConn=new SqlConnection(connectionString);
SqlCommand sqlComm=new SqlCommand("твой insert с параметрами",sqlConn);
try
{
....(что писал)
sqlConn.Open();
......

в блоке
while (reader.read())
{
параметрам присваеваешь reader.GetString(index столбца в Excel).ToString() (или GetValue(index столбца в Excel) в завис. от типа);
sqlComm.ExecuteNonQuery();
}
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34015799
Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а собссна ничего сложного дальше
открываешь коннекшн к своей базе
string connectionString="твой коннект";
SqlConnection sqlConn=new SqlConnection(connectionString);
SqlCommand sqlComm=new SqlCommand("твой insert с параметрами",sqlConn);
try
{
....(что писал)
sqlConn.Open();
......

в блоке
while (reader.read())
{
параметрам присваеваешь reader.GetString(index столбца в Excel).ToString() (или GetValue(index столбца в Excel) в завис. от типа);
sqlComm.ExecuteNonQuery();
}
Спасибо что ответили,
если не возражаете несколько вопросов
1. можно все делать через WEB?
2.*.xls - имя файла?
3. textBox1 - TextBox для .xls файла?
4. что писать вместо [Лист$]?
С Уважением,
Alex
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34018315
gev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
//соединение с базой
string connectionString =
"Net=dbmssocn;Data Source=TESTSERV;Integrated security=SSPI;Initial Catalog=BTP";

SqlConnection conn = new SqlConnection(connectionString);

//ВСТАВКА ДАННЫХ ИЗ ЭКЗЕЛЯ В НОВУЮ ТАБЛИЦУ plan2
string selectString = "SELECT* INTO plan2 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=D:\\Documents and Settings\\progr\\My Documents\\Книга1.xls;Extended Properties=Excel 8.0')...[Лист1$]";

//объект для SELECT запроса
SqlCommand mySqlCommand = conn.CreateCommand();

//соединение с базой
conn.Open();

//присвоение свойству commandText строку с SELECT-запросом
mySqlCommand.CommandText = selectString;


//создание SqlDataAdaptera
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();

//долго объяснять
mySqlDataAdapter.SelectCommand = mySqlCommand;

//создание объекта DataSet для храниения результатов
DataSet myDataSet = new DataSet();

//получение записей из таблицы
string dataTableName = "plan2";
mySqlDataAdapter.Fill(myDataSet, dataTableName);
Вот так у меня работает импорт на Web, где plan2 - имя таблицы которая сама создается при импорте в SQL, Лист1$ - так и пишется это имя листа.
Успехов!!!
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34020233
Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
//соединение с базой
        string connectionString =
            "Net=dbmssocn;Data Source=TESTSERV;Integrated security=SSPI;Initial Catalog=BTP";

        SqlConnection conn = new SqlConnection(connectionString);

//ВСТАВКА ДАННЫХ ИЗ ЭКЗЕЛЯ В НОВУЮ ТАБЛИЦУ plan2
        string selectString = "SELECT* INTO plan2 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=D:\\Documents and Settings\\progr\\My Documents\\Книга1.xls;Extended Properties=Excel 8.0')...[Лист1$]";                                                                                                                                                                                                                                                                                                                                                  
        
        //объект для SELECT запроса
        SqlCommand mySqlCommand = conn.CreateCommand();

        //соединение с базой
        conn.Open();
        
        //присвоение свойству commandText строку с SELECT-запросом
        mySqlCommand.CommandText = selectString;
        

       //создание SqlDataAdaptera
       SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();

        //долго объяснять
        mySqlDataAdapter.SelectCommand = mySqlCommand;

        //создание объекта DataSet для храниения результатов
          DataSet myDataSet = new DataSet();

        //получение записей из таблицы
        string dataTableName = "plan2";
        mySqlDataAdapter.Fill(myDataSet, dataTableName);
Вот так у меня работает импорт на Web, где plan2 - имя таблицы которая сама создается при импорте в SQL, Лист1$ - так и пишется это имя листа.
Успехов!!!
Спасибо за помощь,
по правде сказать многое не понял( извините за неграмотность)
1. строка - string selectString = "SELECT* INTO plan2 FROM OPENDATASOURCE....
что означает, (есть INSERT INTO...SELECT)?
2. Загрузить в dataset .xls файл можно так

http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp
код работает
Вопрос - как таблицу из dataset "поместить" MS SQL( в таблице 3500 строк)?
С Уважением,
Alex
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34020687
gev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
строка - string selectString = "SELECT* INTO plan2 FROM OPENDATASOURCE.... эта строка создает новую таблицу в SQL такуюже как и у тебя в экзеле и заносит туда данные из экзеля. Если написать INSERT INTO...SELECT то она вставит данные в заранее созданную тадлицу в SQL.

Вопрос - как таблицу из dataset "поместить" MS SQL( в таблице 3500 строк)?   -  В моем примере таблица из SQL заносится в датасет, нафига ее в начале занасить в датасет, когда твое таблица  из екзеля напрямую попадает в SQL и там может быть не только 3500 строк, а больше(65536). А в датасете необходимо заносить таблицу чтобы потом ее можно было отабразить на Веб форме.

С уважением, gev




 
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34021612
Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
строка - string selectString = "SELECT* INTO plan2 FROM OPENDATASOURCE.... эта строка создает новую таблицу в SQL такуюже как и у тебя в экзеле и заносит туда данные из экзеля. Если написать INSERT INTO...SELECT то она вставит данные в заранее созданную тадлицу в SQL.

Вопрос - как таблицу из dataset "поместить" MS SQL( в таблице 3500 строк)? - В моем примере таблица из SQL заносится в датасет, нафига ее в начале занасить в датасет, когда твое таблица из екзеля напрямую попадает в SQL и там может быть не только 3500 строк, а больше(65536). А в датасете необходимо заносить таблицу чтобы потом ее можно было отабразить на Веб форме.

С уважением, gev

Огромное спасибо,
я запустил в QA:

SELECT * INTO plan_1 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="d:\wwwroot\alex\second.xls";Extended properties=Excel 8.0')...Лист1$

в mssql создалась таблица plan_1 и в нее все из second.xls скопировались.
Собственно этого я и добивался.

Однако все пять столбцов во вновь созданной plan_1 имеют тип nvarchar
а мне хотелось что бы один столбец был - datetime , второй - money, а остальные- nvarchar. Я создал такую таблицу plan_5 и попробовал:

INSERT INTO plan_5
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="d:\wwwroot\alex\third.xls";Extended properties=Excel 8.0')...Лист1$

появилась ошибка:
Disallowed implicit conversion from data type nvarchar to data type money, table 'Ali.dbo.plan_5', column 'first_price'. Use the CONVERT function to run this query.
Вопрос как добавить CONVERT(money,first_price)?
C Уважением,
Alex







C Уважением,
Alex
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34021725
Guest112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поэтому я и предлагал вариант, когда каждому полю своей таблицы можешь присваивать сконверченные поля из excel типа Convert.ToDateTime(reader.getString(i))
в общем можно по разному, пробуй! ))
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34021932
gev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том что с екзеля он копирует столбцы не так как они у тебя расположены, а в алфавидном порядке вот и получается не стыковка форматов. Поэтому поставь в именах столбцов в екзеле буквы по алфавиту например a_imya  b_telefon, c_adres и т.д Должго все получится пробуй.

С уважением, gev 
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34022257
Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том что с екзеля он копирует столбцы не так как они у тебя расположены, а в алфавидном порядке вот и получается не стыковка форматов. Поэтому поставь в именах столбцов в екзеле буквы по алфавиту например a_imya b_telefon, c_adres и т.д Должго все получится пробуй.

С уважением, gev

Спасибо, за помощь
я создал Excel таблицу из одного столбца с типом nvarchar
запустил
INSERT INTO plan_1
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="d:\wwwroot\alex\third.xls";Extended properties="Excel 8.0;HDR=Yes;IMEX=1"')...Лист1$

Все сработало

создал Excel таблицу из одного столбца с типом money
Запустил INSERT...

та же ошибка:

Disallowed implicit conversion from data type nvarchar to data type money, table 'Ali.dbo.plan_1', column 'e_end_price'. Use the CONVERT function to run this query.
С Уважением,
Alex
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34022908
Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поэтому я и предлагал вариант, когда каждому полю своей таблицы можешь присваивать сконверченные поля из excel типа Convert.ToDateTime(reader.getString(i))
в общем можно по разному, пробуй! ))
Спасибо, что вспомнили обо мне
я сслылку нашел
http://www.codeproject.com/useritems/Excel_Connectivity.asp
как я понял используя только ms sql сконвертировать не получиться, попробую Ваш подход.
Еще раз спасибо,
и если не возражаете может еще раз к Вам обращусь за помощью.
С Уважением,
Alex
...
Рейтинг: 0 / 0
импорт из Excel в MS SQL
    #34027512
gev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда предлагаю сделать создаваемую таблицу временной.
Описание: Создается новая таблица импортируемая из екзель, затем все данные из нее копируются в заранее созданую таблицу, и удаляем имортируемую таблицу.

С Уважением, gev
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / импорт из Excel в MS SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]