Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 07.10.2016
Сообщений: 29

Создать хмл-файл исходя из данных эксель файла

28.04.2022, 14:43. Показов 659. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,уважаемые форумчане!
Задача, прочитать эксель файл и данные файла записать в хмл файл.
Вот код:
Java
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
package org.example;
 
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.w3c.dom.Element;
 
import java.io.FileInputStream;
 
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
 
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
 
public class ParserExcel {
    public static String parse(String fileName) {
        //инициализируем потоки
        String result = "";
        InputStream inputStream = null;
        XSSFWorkbook workBook = null;
        try {
 
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
 
// корневые элементы nodes
            Document doc = docBuilder.newDocument();
            Element rootElement = doc.createElement("nodes");
            doc.appendChild(rootElement);
        ///////////////////////////////////////////////////////
        try {
            inputStream = new FileInputStream(fileName);
            workBook = new XSSFWorkbook(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //разбираем первый лист входного файла на объектную модель
        Sheet sheet = workBook.getSheetAt(0);
        Iterator<Row> it = sheet.iterator();
        //проходим по всему листу
        while (it.hasNext()) {
            Row row = it.next();
            Iterator<Cell> cells = row.iterator();
            while (cells.hasNext()) {
                Cell cell = cells.next();
                CellType type = cell.getCellType();
                //перебираем возможные типы ячеек
                switch (type) {
 
                        case STRING:
                            //dest
 
                            Element dest_t = doc.createElement("dest");
                            rootElement.appendChild(dest_t);
// установить атрибут для элемента dest
                            Attr attr = doc.createAttribute("title");
                            attr.setValue("operator X " + cell.getStringCellValue());
                            dest_t.setAttributeNode(attr);
                            // элементы prefix values
                            Element prefix_v = doc.createElement("prefix");
                            dest_t.appendChild(prefix_v);
                            Attr attr_p = doc.createAttribute("values");
                            attr_p.setValue(cell.getStringCellValue());
                            prefix_v.setAttributeNode(attr_p);
                            // элементы cost
                            Element costout_c = doc.createElement("costout");
                            prefix_v.appendChild(costout_c);
                            Attr attr_c = doc.createAttribute("cost");
                            attr_c.setValue("1");
                            costout_c.setAttributeNode(attr_c);
                            result += cell.getStringCellValue() + "  ";
 
                            break;
 
                        case NUMERIC:
 
                            result += "[" + cell.getNumericCellValue() + "]";
                            break;
 
                        case FORMULA:
                            result += "[" + cell.getNumericCellValue() + "]";
                            break;
                        default:
                            result += "|";
                            break;
                    }
                }
            result += "\n";
        }
//////////////////////////////////////////////////////////////////////////////////////
       /* try {
 
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
 
// корневые элементы nodes
            Document doc = docBuilder.newDocument();
            Element rootElement = doc.createElement("nodes");
            doc.appendChild(rootElement);
 
// dest
            Element dest_t = doc.createElement("dest");
            rootElement.appendChild(dest_t);
 
// установить атрибут для элемента dest
            Attr attr = doc.createAttribute("title");
            attr.setValue("1");
            dest_t.setAttributeNode(attr);
 
 
// элементы prefix values
            Element prefix_v = doc.createElement("prefix");
            dest_t.appendChild(prefix_v);
            Attr attr_p = doc.createAttribute("values");
            attr_p.setValue("1");
            prefix_v.setAttributeNode(attr_p);
 
// элементы cost
            Element costout_c = doc.createElement("costout");
            prefix_v.appendChild(costout_c);
            Attr attr_c = doc.createAttribute("cost");
            attr_c.setValue("1");
            costout_c.setAttributeNode(attr_c);
 
// записать содержимое в XML-файл
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            transformerFactory.setAttribute("indent-number", 2);
            Transformer transformer = transformerFactory.newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            DOMSource source = new DOMSource(doc);
            StreamResult result1 = new StreamResult(new File("D:\\ProjectJava\\Задание 1\\Задание 1\\file.xml"));
 
// Вывод на консоль для тестирования
// StreamResult result = new StreamResult (System.out);
 
            transformer.transform(source, result1);
 
            System.out.println("File saved!");
 
        } catch (ParserConfigurationException pce) {
            pce.printStackTrace();
        } catch (TransformerException tfe) {
            tfe.printStackTrace();
        }
        */
            // записать содержимое в XML-файл
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            transformerFactory.setAttribute("indent-number", 2);
            Transformer transformer = transformerFactory.newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            DOMSource source = new DOMSource(doc);
            //StreamResult result1 = new StreamResult(new File("D:\\ProjectJava\\Задание 1\\Задание 1\\file.xml"));
 
// Вывод на консоль для тестирования
// StreamResult result = new StreamResult (System.out);
 
            transformer.transform(source, result1);
 
            System.out.println("File saved!");
 
        } catch (ParserConfigurationException pce) {
            pce.printStackTrace();
        } catch (TransformerException tfe) {
            tfe.printStackTrace();
        }
//////////////////////////////////////////////////////////////////////////////////////
 
        return result;
    }
}
Но есть проблема) Думаю использую немного не тот вариант цикла, т.к. мне нужно записать значения в определенные теги.Есть строка,состоящая из трех ячеек.Значение Абхазия, 1 , 2
Абхазия должна идти в тег dest title, 1 в тег prefix values, 2 в тег costout cost="1")
Может посоветуете что-нибудь?Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.04.2022, 14:43
Ответы с готовыми решениями:

Почему при открытии файла эксель, появляется из фонового скрытого режима мой файл эксель
Добрый день уважаемые форумчане, столкнулся с такой проблеммой. Есть небольшая программка которая при запуске и нажатии кнопки запускает...

Сравнить файлы Эксель и ХМЛ
Добрый день,уважаемые форумчане! Есть задача сравнить два файла. Первый файл это эксель файл,второй файл - хмл файл. Если ли какой-то...

Чтение из файла определённого места и сортировка данных исходя из этих данных
Есть некий текстовый документ, содержащий информацию о посещении сайта в формате: Например 12.5.76.200 04:23 Mon Цель:...

1
0 / 0 / 0
Регистрация: 07.10.2016
Сообщений: 29
28.04.2022, 17:40  [ТС]
Добрый день,уважаемые форумчане!
Нужно данные из файла эксель засунуть в хмлку.Не могу разобраться как правильно разбить...
Вот код:
Java
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
while (it.hasNext()) {
            Row row = it.next();
            Iterator<Cell> cells = row.iterator();
            while (cells.hasNext()) {
                Cell cell = cells.next();
                CellType type = cell.getCellType();
                //перебираем возможные типы ячеек
                switch (type) {
 
                        case STRING:
                            //dest
                            if (row.getRowNum() != 0) {
                               if (cell.getColumnIndex() == 0) {
                                    Element dest_t = doc.createElement("dest");
                                    rootElement.appendChild(dest_t);
// установить атрибут для элемента dest
                                    Attr attr = doc.createAttribute("title");
                                    attr.setValue("operator X " + cell.getStringCellValue());
                                    dest_t.setAttributeNode(attr);
                                    // элементы prefix values
                                    Element prefix_v = doc.createElement("prefix");
                                    dest_t.appendChild(prefix_v);
                                    Attr attr_p = doc.createAttribute("values");
                                    attr_p.setValue(cell.getStringCellValue());
                                        prefix_v.setAttributeNode(attr_p);
                                    // элементы cost
                                    Element costout_c = doc.createElement("costout");
                                    prefix_v.appendChild(costout_c);
                                    Attr attr_c = doc.createAttribute("cost");
                                    attr_c.setValue(cell.getStringCellValue());
                                    costout_c.setAttributeNode(attr_c);
 
                                }
 
                            }
 
                            result += cell.getStringCellValue() + "  ";
                            break;
 
                        case NUMERIC:
 
                            result += "[" + cell.getNumericCellValue() + "]";
                            break;
 
                        case FORMULA:
                            result += "[" + cell.getNumericCellValue() + "]";
                            break;
                        default:
                            result += "|";
                            break;
                    }
                }
            result += "\n";
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2022, 17:40
Помогаю со студенческими работами здесь

Сохранение файла с именем исходя из данных
Не сильно силен в формулах и VBA, подскажите как сделать так чтоб при нажатии кнопки &quot;Сохранить файл&quot; в таблице скрывались пустые...

Заполнить файл эксель с файла html
Здравствуйте, например у пользователя на компьютере есть файл эксель, можно создать файл html, чтобы там была форма, на форме выбрал нужные...

Создать (сконвертировать) эксель файл из строки шестнадцатиричного формата
Всем доброго времени суток. Возникла следующая задача. У меня есть большая строка (8000 символов) в шестнадцатеричном формате,...

Неполадки с чтением данных из эксель файла
Привет всем!Не могу решить проблему с чтением данных из таблицы,помогите? Файл с проблемой в МАТКАД 14 прилагаю.Нужно именно в нем.

Как отвязать эксель-файл(шаблон) от файла на диске?
Есть файл-шаблон. Надо открыть его, заполнить и оставить открытым. Но! надо отвязать этот заполненный файл от шаблона и никуда не...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru