Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
148 / 35 / 6
Регистрация: 01.11.2013
Сообщений: 793
1

Выгрузка из Excel в текстовый файл

24.07.2018, 19:06. Показов 3316. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго дня.
Может кто-нибудь сталкивался...
Есть необходимость при выгрузке данных из Excel в текстовый файл, прорисовать в текстовом файле границы таблицы, что бы получилось примерно как во вложении. Нужна помощь, как это сделать.
Спасибо.
Вложения
Тип файла: txt 111.txt (322 байт, 6 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2018, 19:06
Ответы с готовыми решениями:

Выгрузка из 1С в текстовый файл
Привет. нужна помощь. срочно. есть вопрос по програмированию в 1с задача такая нужно создать...

Выгрузка TTable в текстовый файл
Помогите, пжл, с решением следующей задачи: Имеется таблица TTable со следующими полями:...

Выгрузка данных из БД в текстовый файл
Как реализовать выгрузку данных из БД, в текстовый файл по нажатию кнопки?

Выгрузка в текстовый файл данных из справочника
Нужно реализовать выгрузку данных из справочника номенклатура, отпускная цена который больше 100 ,...

11
6944 / 2849 / 548
Регистрация: 19.10.2012
Сообщений: 8,721
24.07.2018, 19:10 2
Пишите в файл данные построчно:
сперва 45 раз -
затем |, данные одной ячейки в нужном виде, |, данные второй и т.д.
снова 45 раз -
и т.д.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
37299 / 20733 / 4272
Регистрация: 12.02.2012
Сообщений: 34,122
Записей в блоге: 14
24.07.2018, 19:52 3
Персечение строк и столбцов лучше изображать плюсами. Симпатичнее выйдет:

Код
+----------+---------------+
|   Ф И О  |     Сумма     |
+----------+---------------+
2
15151 / 6424 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
24.07.2018, 20:04 4
govorun, ширина "ячеек" задана или надо подобрать по содержимому, т.е. по самому длинному тексту в столбце?
1
148 / 35 / 6
Регистрация: 01.11.2013
Сообщений: 793
24.07.2018, 20:27  [ТС] 5
Казанский, наверное лучше с заданной (статичной) шириной
0
15151 / 6424 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
24.07.2018, 21:13 6
Лучший ответ Сообщение было отмечено govorun как решение

Решение

govorun, в первом приближении
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
Sub Gv()
Const WID = "6,6,8,19" 'ширина столбцов
Dim sw$(), v(), f%, s1$, i&, j&
  sw = Split(WID, ",")
  ReDim iw&(0 To UBound(sw))
  For i = 0 To UBound(sw)
    iw(i) = sw(i)
    s1 = s1 & String$(iw(i), "-") & "+"
  Next
  s1 = "+" & s1
  v = ActiveSheet.UsedRange.Resize(, i).Value
  f = FreeFile
  Open ThisWorkbook.Path & "\" & ActiveSheet.Name & ".txt" For Output As f
  For i = 1 To UBound(v)
    Print #f, s1
    For j = 1 To UBound(v, 2)
      Print #f, "|"; v(i, j); Space$(iw(j - 1) - Len(v(i, j)));
    Next
    Print #f, "|"
  Next
  Print #f, s1
  Close #f
End Sub
1
148 / 35 / 6
Регистрация: 01.11.2013
Сообщений: 793
24.07.2018, 22:02  [ТС] 7
Казанский, Спасибо, буду разбираться
0
148 / 35 / 6
Регистрация: 01.11.2013
Сообщений: 793
27.07.2018, 19:53  [ТС] 8
Цитата Сообщение от Казанский Посмотреть сообщение
Print #f, "|"; v(i, j); Space$(iw(j - 1) - Len(v(i, j)));
Рисует великолепно, только на эту строку ругается, методом тыка (заменил -Len на +Len) определил, что беда в "Space$(iw(j - 1) - Len(v(i, j)));" и в числах "лишние" ноли отбрасывает (из 15.50 делает 15.5) и соответственно сдвигаются границы
Вложения
Тип файла: xls Кн1.xls (40.0 Кб, 2 просмотров)
Тип файла: txt Лист1.txt (2.2 Кб, 1 просмотров)
0
4079 / 1459 / 401
Регистрация: 07.08.2013
Сообщений: 3,649
27.07.2018, 22:30 9
ой ой тут минус на плюс менять нельзя
назначение Space$(iw(j - 1) - Len(v(i, j))) вставить определенное количество пробелов
т.к. ширина (количество символов) строки величина постоянная а длинна вставляемого слова не постоянная то для получения определенного расстояния между разделителями нужно добить пробелы
где iw(j - 1)- количество символов в столбце (ширина столбца)
Len(v(i, j)) - длинна (количество символов) вставляемого в столбец слова
1
4079 / 1459 / 401
Регистрация: 07.08.2013
Сообщений: 3,649
27.07.2018, 22:39 10
а ругануться он может если слово превышает ширину т.е. получается отрицательное число
Миниатюры
Выгрузка из Excel в текстовый файл  
1
148 / 35 / 6
Регистрация: 01.11.2013
Сообщений: 793
28.07.2018, 10:26  [ТС] 11
Вроде получилось выравнять границы, не знаю почему, но после "|" добавлялся пробел
заменил
Visual Basic
1
Print #f, "|"; v(i, j); Space$(iw(j - 1) - Len(v(i, j)));
на
Visual Basic
1
Print #f, "|" & Space$(iw(j - 1) - Len(v(i, j))) & v(i, j);
Теперь буду ломать голову, как оставлять ноли после запятой
Вложения
Тип файла: xls Кн1.xls (40.0 Кб, 1 просмотров)
Тип файла: txt Лист1.txt (546 байт, 1 просмотров)
0
4079 / 1459 / 401
Регистрация: 07.08.2013
Сообщений: 3,649
28.07.2018, 12:54 12
любой числовой формат режет нули
можно воспользоваться функцией Format
например так
вот это
Visual Basic
1
2
3
For j = 1 To UBound(v, 2)
Print #f, "|"; v(i, j); Space$(iw(j - 1) - Len(v(i, j)));
Next j
сделать так
Visual Basic
1
2
3
4
For j = 1 To UBound(v, 2)
if isnumeric(v(i, j)) then asd=format(v(i, j),fixed) else asd=cstr(v(i, j))
Print #f, "|"; asd; Space$(iw(j - 1) - Len(asd));
Next j
а на счет лишних пробелов
они могут быть в таблице в значении
по-этому надо применять trim
Visual Basic
1
2
3
4
For j = 1 To UBound(v, 2)
if isnumeric(v(i, j)) then asd=format(v(i, j),fixed) else asd=cstr(v(i, j))
Print #f, "|"; trim(asd); Space$(iw(j - 1) - Len(Trim(asd)));
Next j
1
28.07.2018, 12:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2018, 12:54
Помогаю со студенческими работами здесь

Выгрузка данных из БД MySQL в текстовый файл
Доброго времени суток! Помогите пожалуйста, есть dataGridView1 в нем из базы данных Mysql...

Загрузка/выгрузка в текстовый файл из экселя
Задача такая создать два макроса, один загружает в таблицу excel из файла c://temp.txt, второй...

Выгрузка ведомости на зарплату в excel файл
Доброго времени суток! Пожалуйста дайте ссылку на статью или подскажите как решить задачу выгрузки...

Не работает выгрузка в текстовой файл в Excel 2002
Беру практически хелповский пример Open 'TESTFILE' For Output Shared As #1 sf = '<?xml...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru