Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/68: Рейтинг темы: голосов - 68, средняя оценка - 4.69
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363

Экспорт данных листов excel в xml

06.02.2007, 21:36. Показов 12924. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В своем приложении я экспортирую данные листов Excel в xml файл.
Делаю я это примерно так:
Visual Basic
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Sub send_to_xml_Click()
Dim strConnectString$, strSQL$, strHeading$
Dim cnn As ADODB.Connection
Dim rs As Recordset
 
'листаем книгу
For i = 1 To ThisWorkbook.Sheets.Count
'    For Each f In Worksheets(i).Range(Module3.scan_diap)
    ''''''''''''''''''''''''''и превращаем данные в record set
      NameDir = ThisWorkbook.Path & ""
      strConnectString = "Provider=MSDASQL.1;Persist Security Info=True;" & _
            "Data Source = Файлы Excel;Initial Catalog=" & NameDir
    
      'strConnectString = "Provider=Microsoft.Jet.OLEDB.3.51;" & _
        "Persist Security Info=False;" & _
         "Data Source=C:vb-dbxmltest.mdb"
         'scan_diap
      strSQL = "SELECT * FROM [" & Worksheets(i).Name & "$" & Module3.scan_diap & _
      "] IN '" & ThisWorkbook.FullName & "' [Excel 5.0;HDR=NO;IMEX=2];"
 
      strHeading$ = "preds"
      Set cnn = New ADODB.Connection
      Set rs = New ADODB.Recordset
      cnn.Open strConnectString$   ' устанавливаем связь
      Set rs = cnn.Execute(strSQL) ' создаем Recordset
      Call ExportXML(rs, strHeading$, strCode, "d:file1.xml") 'грузим в xml
'    Next f
Next i
 
End Sub
 
Public Sub ExportXML(rs As Recordset, strHeading$, strCode, FileName$) '
   ' Экспорт таблицы RecordSet в XML файл
   Dim xmlDoc As DOMDocument
 
   ' Cоздаем XMLDOM-объект
   Set xmlDoc = RecordsetToXMLDOM(rs, strHeading$, strCode) '
   ' выводим его в виде отдельного файла
   xmlDoc.Save FileName$
End Sub
 
Public Function RecordsetToXMLDOM(rs As Recordset, strHeading$, strCode) As DOMDocument '
   '
   ' Преобразование Recordset в DOMDocument
   '
   Dim fldField As Field
   Dim xmlDoc As DOMDocument
   Dim xmlFields As IXMLDOMElement
   Dim xmlField As IXMLDOMElement
   Dim i&
 
   ' создание экземпляра объекта
   Set xmlDoc = CreateObject("Microsoft.XMLDOM")    ' New DOMDocument
   ' записываем XML-константу объекта
   xmlDoc.loadXML "<?xml version=""1.0"" encoding=""windows-1251"" ?>" + _
    Replace("<" + strHeading + "/>", " ", "_")
'      Replace("<" + strHeading + "/>", " ", "_") 
 
   With rs
      ' Вывод содержимого полей таблицы
      .MoveFirst: i = 1
       Do Until .EOF
          ' создание нового узла
          Set xmlFields = xmlCode.documentElement.appendChild _
            (xmlDoc.createElement("OneRow" + LTrim(Str(i))))
 
          For Each fldField In rs.Fields   ' запись полей записи
               Set xmlField = xmlFields.appendChild( _
                xmlDoc.createElement(Replace(fldField.Name, " ", "_")))
                If IsNull(fldField.Value) = False Then
                    xmlField.Text = fldField.Value
                End If
          Next
         .MoveNext   ' к следующей записи набора
          i = i + 1
      Loop
   End With
   Set RecordsetToXMLDOM = xmlDoc   ' возвращаем созданный объект
End Function
Полученный xml я предполагаю использовать для web отображения данных. Заставлять пользователя вручную копировать файл из локальной fs на сервер не есть хорошо. Очевидно, что метод xmlDoc.Save FileName$ не сработает, если я вместо локального пути укажу url удаленного web-сервера. Как решить эту проблему?

С уважением,
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2007, 21:36
Ответы с готовыми решениями:

экспорт листов из excel в Power Point
Доброго времени суток! Появилась сверху амбициозная задача: дан лист excel, на на нем диапазон под лист А4 (А1:N33 например). Хочется,...

Экспорт данных в Excel и XML
Есть база данных, которая хранится в MS SQL Server. Доступ к БД реализован с помощью Entity Framework. Нужно написать функции для экспорта...

Экспорт из excel в xml
Добрый день. Во вложении хмл файл(универсальный передаточный документ, аналог торг-12). Открываю его через эксель, редактирую, что мне...

8
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
06.02.2007, 22:25  [ТС]
Конечно я мог бы положить этот файл на сервер через подключение сетевого диска (API), но зная локальную сеть предприятия, где это будет работать, думаю, что это не приемлимо. Использование active-x ftp компонент сторонних производителей известных в сети, тоже не подойдет.



С уважением,
0
2 / 2 / 1
Регистрация: 10.04.2011
Сообщений: 415
08.02.2007, 17:06
Ну, если в API есть функция загрузки URLDownloadToFile, должна быть и функция выгрузки. Я бы там поискал. Лежит она наверняка в urlmon.dll.
0
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
08.02.2007, 18:50  [ТС]
Спасибо за отклик. Буду искать.



С уважением,
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
08.02.2007, 19:52
Можно еще два способа попробовать:
1) В Windows есть программа для работы с ftp с командной строки. У нее есть удобный параметр -s позволяющий подать на вход команды из внешнего файла. В первой строки пишем имя, во второй пароль, затем нужные команды по загрузке файла и, в конце, команда bye для отключения. Запустить внешнуюю программу из Excel не должно составить труда.
2) Организовать на веб-сервере страницу для upload-а файлов и обращаться к ней из Excel с помощью стандартного компонента XmlHttpRequest.
На мой взгляд первый способ проще всего. Его недостаток в невозможности проконтролировать успех/неуспех операции по загрузке файла.
0
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
08.02.2007, 20:29  [ТС]
Спасибо за совет. 1 вариант будет запасным (очень трудно "уломать" заказчика поднять ftp сервер).

нашел пример: http://www.motobit.com/tips/detpg_uploadvbaie/

Попробовал на localhost
Visual Basic
1
Call UploadFile("http://localhost", "C:1.xml")
вроде все отрабатывает без ошибок, но файл не копируется.



С уважением,
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
08.02.2007, 20:53
babken76 (08.02.2007)
нашел пример: http://www.motobit.com/tips/detpg_uploadvbaie/
Попробовал на localhost
Call UploadFile("http://localhost", "C:1.xml")
вроде все отрабатывает без ошибок, но файл не копируется.
А у тебя на localhost есть скрипт обрабатывающий upload? Без него работать не будет.
0
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
08.02.2007, 21:06  [ТС]
Bazile, ты как всегда прав. Не внимательно прочел. Не могу только его найти на этом сайте.



С уважением,
0
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
29.05.2007, 22:12  [ТС]
to Bazile:


1) В Windows есть программа для работы с ftp с командной строки. У нее есть удобный параметр -s позволяющий подать на вход команды из внешнего файла. В первой строки пишем имя, во второй пароль, затем нужные команды по загрузке файла и, в конце, команда bye для отключения. Запустить внешнуюю программу из Excel не должно составить труда.


А как передать инструкцию OPEN?



С уважением,
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.05.2007, 22:12
Помогаю со студенческими работами здесь

Экспорт из Excel в XML
Здравствуйте! помогите, пожалуйста. Есть документ с небольшой БД (фамилии, имена и тд) и при помощи VBA нужно экспортировать данные в XML...

Экспорт определённых нод XML в Excel
Всем доброго времени суток :) Как экспортировать определённые ноды из XML документа в Excel файл? Это делается как в этом примере? ...

Экспорт данных из таблицы Excel в шаблон Excel
Добрый день! Проблемка заключается в следующем: В папке debug во вложении есть файл &quot;Дмитров_расшифровка - копия&quot;. С него...

Экспорт-импорт данных Excel-Access-Excel
Доброе время суток уважаемые форумчане. Приходит информация в экселевской таблице. Скидываю её в общую базу в Access. Для отчета...

Экспорт данных из БД в XML
Интересует именно на Java. Подскажите какие стандартные классы и методы лучше всего использовать, и накидайте ссылок на статьи по этой теме.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru