powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Конвертер xls в csv
25 сообщений из 51, страница 2 из 3
Конвертер xls в csv
    #38838325
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,

только не стебитесь, если есть желание расскажите как сделать, у меня руки опустились уже(((
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38838337
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamaraadminsamara,

только не стебитесь, если есть желание расскажите как сделать, у меня руки опустились уже(((

... ну так возьми полностью код из поста user89, сохрани его как скрипт chototam.vbs и запусти сначала на пробном файле (который выложил он), а потом на своем ... Никакого Excel.Application там не надо ...
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38838347
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... или попробуй мой вариант, что те же яйцы, только с боку

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Set objConnXLS = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
Set FileSys = CreateObject("Scripting.FileSystemObject")
Set OutFile = FileSys.OpenTextFile("1.csv", 8, true)
objConnXLS.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=1.xls;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;"";"
objRecordSet.Open "SELECT * FROM [Лист1$]", objConnXLS, 3, 3
If Not objRecordSet.EOF AND Not objRecordSet.BOF Then
	objRecordSet.MoveFirst
	For intColumns = 0 To (objRecordset.Fields.Count - 1)
		If intColumns < objRecordset.Fields.Count - 1 Then
			strDelimiter = ";"
		Else
			strDelimiter = ""
		End If	
        	strHeader = strHeader + objRecordset.Fields.Item(intColumns).Name & strDelimiter
    	Next
	OutFile.WriteLine strHeader
	arrRecords = objRecordSet.GetRows
	For i = 0 To UBound(arrRecords, 2)
		strRow = ""
		For intColumns = 0 To (objRecordset.Fields.Count - 1)
			If intColumns < objRecordset.Fields.Count - 1 Then
				strDelimiter = ";"
			Else
				strDelimiter = ""
			End If
			strRow = strRow & arrRecords(intColumns, i) & strDelimiter
		Next
		OutFile.WriteLine strRow
	Next	
End If
OutFile.Close
objRecordSet.Close
objConnXLS.Close
Set objRecordSet = Nothing
Set objConnBank = Nothing
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38838385
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,

откуда запускать скрипт и где должен находится файл?
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38838389
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamaracarrotik,

откуда запускать скрипт и где должен находится файл?

... главное, из одного места (т.е. одной папки) ... или поправить пути к 1.xls и 1.csv, например

Код: vbnet
1.
2.
3.
4.
Set OutFile = FileSys.OpenTextFile("d:\1.csv", 8, true)
...
objConnXLS.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\1.xls;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;"";"
...
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38838442
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понимаю, какие проблемы, почему тема еще не закрыта :))
Здесь уже упоминался метод через Microsoft.Jet.OLEDB.4.0 , а еще можно еще через Microsoft.ACE.OLEDB.12.0 попробовать.

Вот готовое решение, где есть то и то: xls to csv
Там все на vbs , а форма на HTA
и да, тоже не требует наличия установленного офиса.
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38838925
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,

так и раньше делал, выпадает в ошибку строка 5 символ 1...
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38838938
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ART-CODE,
мне нужно не через форму...,
мне нужно чтобы из батника запустился .vbs, переконвертиковался файл в csv и подгрузился через sqlldr в oracle.
может что попробовать переустановить?! чтоьы скрипты нормально запускались?
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38838952
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamaracarrotik,

так и раньше делал, выпадает в ошибку строка 5 символ 1...

..а текст ошибки? .. может драйвер OLEDB не установлен в системе?
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38838964
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Установил виртуалку и о чудо 2 скрипта отрабатываются без ошибок!!!
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Set objConnXLS = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
Set FileSys = CreateObject("Scripting.FileSystemObject")
Set OutFile = FileSys.OpenTextFile("1.csv", 8, true)
objConnXLS.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=1.xls;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;"";"
objRecordSet.Open "SELECT * FROM [Лист1$]", objConnXLS, 3, 3
If Not objRecordSet.EOF AND Not objRecordSet.BOF Then
	objRecordSet.MoveFirst
	For intColumns = 0 To (objRecordset.Fields.Count - 1)
		If intColumns < objRecordset.Fields.Count - 1 Then
			strDelimiter = ";"
		Else
			strDelimiter = ""
		End If	
        	strHeader = strHeader + objRecordset.Fields.Item(intColumns).Name & strDelimiter
    	Next
	OutFile.WriteLine strHeader
	arrRecords = objRecordSet.GetRows
	For i = 0 To UBound(arrRecords, 2)
		strRow = ""
		For intColumns = 0 To (objRecordset.Fields.Count - 1)
			If intColumns < objRecordset.Fields.Count - 1 Then
				strDelimiter = ";"
			Else
				strDelimiter = ""
			End If
			strRow = strRow & arrRecords(intColumns, i) & strDelimiter
		Next
		OutFile.WriteLine strRow
	Next	
End If

OutFile.Close
objRecordSet.Close
objConnXLS.Close
Set objRecordSet = Nothing
Set objConnBank = Nothing



и

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
option explicit

dim rs, ConnectionString, s, i, fso, f, Separator
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile("c:\1\1.csv", True)

Set rs = CreateObject("ADODB.Recordset")
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\1\1.xls;User ID=Admin;Password=;Extended Properties=""Excel 8.0;IMEX=1""" 'IMEX=1 нужен, чтобы корректно прочитался столбец, если в нем идут вмеперешку ячейки с числами, датами, строками...

rs.Open "select * from [Лист1$]", ConnectionString

s = ""
Separator = ";"

'Заголовок
for i = 0 to rs.Fields.Count - 1
	s = s & CStr(rs.Fields(i).Name) & Separator
next
f.WriteLine(s)

'Бегаем по данным
while not rs.EOF
		s = ""
		for i = 0 to rs.Fields.Count - 1
			s = s & CStr(rs.Fields(i).Value) & Separator
		next
	f.WriteLine(s)
	rs.MoveNext
wend

rs.Close
Set rs = Nothing

f.Close
set f = nothing
set fso = nothing
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38838971
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно переустановлю ОС

Парни последний вопрос, как взять все exl в папке и перегнать в csv

пробовал *.exl *.csv не прокатило (
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839000
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,

.. как перечислить файлы в папке
Enumerating the Files in a Folder

... там еще надо вставить проверку на расширение, например
Код: vbnet
1.
2.
3.
If UCase(objFSO.GetExtensionName(objFile.name)) = "XLS" Then
        ......
    End If



ну и соответственно вместо имени входного файла использовать obFile.Name, а вместо выходного -

Код: vbnet
1.
objFSO.GetBaseName(objFile.name) & ".csv"
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839011
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,
Можно пример использования?
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839040
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamaracarrotik,
Можно пример использования?

vb-script надо проверять на живой системе, а меня windows под рукой нету ... или жди понедельника, или сам пробуй ... :)
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839045
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,

примерно хотя бы смысл и последовательность накидай) куда как и зачем должно идти
куда деваться буду ждать понедельника)
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839046
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,
выше 2 скрипта есть, подправь один из них, я посмотрю хотябы на каких местах дожно быть что, а там может сам додумаю...)
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839052
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,

вот примерно так, но могу зрительно ошибиться где-то, на глаз код отладить не могу .... предположим, что файлы в папке d:\MyXLS

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Set objConnXLS = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
Set FileSys = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("d:\MyXLS")
Set colFiles = objFolder.Files
For Each objFile in colFiles
If UCase(objFSO.GetExtensionName(objFile.name)) = "XLS" Then
Set OutFile = FileSys.OpenTextFile(objFSO.GetBaseName(objFile.Name) & ".csv", 8, true)
objConnXLS.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & objFile.Name & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;"";"
objRecordSet.Open "SELECT * FROM [Лист1$]", objConnXLS, 3, 3
If Not objRecordSet.EOF AND Not objRecordSet.BOF Then
	objRecordSet.MoveFirst
	For intColumns = 0 To (objRecordset.Fields.Count - 1)
		If intColumns < objRecordset.Fields.Count - 1 Then
			strDelimiter = ";"
		Else
			strDelimiter = ""
		End If	
        	strHeader = strHeader + objRecordset.Fields.Item(intColumns).Name & strDelimiter
    	Next
	OutFile.WriteLine strHeader
	arrRecords = objRecordSet.GetRows
	For i = 0 To UBound(arrRecords, 2)
		strRow = ""
		For intColumns = 0 To (objRecordset.Fields.Count - 1)
			If intColumns < objRecordset.Fields.Count - 1 Then
				strDelimiter = ";"
			Else
				strDelimiter = ""
			End If
			strRow = strRow & arrRecords(intColumns, i) & strDelimiter
		Next
		OutFile.WriteLine strRow
	Next	
End If
OutFile.Close
objRecordSet.Close
objConnXLS.Close
End If
Next
Set objRecordSet = Nothing
Set objConnXLS = Nothing



.. но тут еще надо следить за тем, как называется первый лист в Экселовском файле, плюс желательно выходные файлы создавать в другой папке, ну и еще чего-нибудь может вылезти .. Вообще говоря, если тебе в Оракл надо их сбрасывать, то можно и напрямую, без преобразования в CSV, только строку подключения правильно подобрать и драйвер оракловский установить ...
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839060
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,
http://www.oracle.com/technetwork/database/database-technologies/rdb/downloads/othersoft-087176.html

какой из этих драйверов грузить?
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839062
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,
ругается на строка 4 символ 1
давай тогда до завтра подожду
я думаю не имеет смысл через драйвер, нужна простая 1 операция, давай лучше до завтра
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839064
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,

требуется объект objFSO
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839067
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamaraadminsamara,

требуется объект objFSO

..ну да .. я же из разных примеров тащил ..
поменяй
FileSys на objFSO везде, где встречается
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839073
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,

ничего не вышло, ладно до завтра подожду) спасибо большое за помощь)
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839316
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,

Я тут жду вашей помощи =)
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839611
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Set objConnXLS = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("c:\")
Set colFiles = objFolder.Files
For Each objFile in colFiles
If UCase(objFSO.GetExtensionName(objFile.name)) = "XLS" Then
Set OutFile = objFSO.OpenTextFile(objFSO.GetBaseName(objFile.Name) & ".csv", 8, true)
objConnXLS.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & objFile.Name & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;"";"
objRecordSet.Open "SELECT * FROM [Лист1$]", objConnXLS, 3, 3
If Not objRecordSet.EOF AND Not objRecordSet.BOF Then
    objRecordSet.MoveFirst
    For intColumns = 0 To (objRecordset.Fields.Count - 1)
        If intColumns < objRecordset.Fields.Count - 1 Then
            strDelimiter = ";"
        Else
            strDelimiter = ""
        End If  
            strHeader = strHeader + objRecordset.Fields.Item(intColumns).Name & strDelimiter
        Next
    OutFile.WriteLine strHeader
    arrRecords = objRecordSet.GetRows
    For i = 0 To UBound(arrRecords, 2)
        strRow = ""
        For intColumns = 0 To (objRecordset.Fields.Count - 1)
            If intColumns < objRecordset.Fields.Count - 1 Then
                strDelimiter = ";"
            Else
                strDelimiter = ""
            End If
            strRow = strRow & arrRecords(intColumns, i) & strDelimiter
        Next
        OutFile.WriteLine strRow
    Next    
End If
OutFile.Close
objRecordSet.Close
objConnXLS.Close
End If
Next
Set objRecordSet = Nothing
Set objConnXLS = Nothing



РАЗОБРАЛСЯ =)
...
Рейтинг: 0 / 0
Конвертер xls в csv
    #38839768
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,

..ну вот и ладненько ... что касается варианта с импортом напрямую из Экселя в Оракл - я с ораклом никогда не работал, поэтому некоторых нюансов могу не знать, но импорт из Экселя в MS SQL через VB-скрипт у меня работал и без особых проблем .... Просто создаются два ADODB подключения, одно к Экселю, другое к SQL, и вынимается/вставляется ....
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 2 из 3
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Конвертер xls в csv
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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