Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

27 Май 2019, 04:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Экспорт текста из Calc  (Прочитано 2124 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Андрей2014
Участник
**
Offline Offline

Сообщений: 38


« Стартовое сообщение: 24 Апрель 2015, 20:59 »

Доброго времени суток.
Была задача правильно импортировать текст - сделано. Обработано и сохранено. Теперь задача обратная, надо полученные данные экспортировать обратно в текстовый файл.
Итак, данные расположены на трёх листах, каждый из которых имеет 1024(столбца)Х150(строк). Надо получить текстовый файл, где все столбцы будут записаны друг за другом с разделением пустой строкой.
Т.е. имеея подобное в Calc
Код:
A B C D
4 2 2 9
5 5 1 4
5 7 3 7
7 0 8 2
8 6 3 1
надо в итоге получить текстовый файл подобный
Код:
A
4
5
5
7
8

B
2
5
7
0
6

C
2
1
3
8
3

D
9
4
7
2
1

Опять же, напрямую сделать такое, похоже, не удастся. Во что лучше экспортировать сначала?





Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 24 Апрель 2015, 21:53 »

Должно сработать (если при описании задачи ничего не упустил)
Код:
Sub allSheetsToFile
Dim FilePath as String
Dim oSheets As Variant
Dim oSheet As Variant
Dim oCursor As Variant
Dim oDataArray As Variant
Dim FileChannel as Integer
Dim oFile as Object
Dim oOutputStream as Object
Dim oStreamString as Object
Dim oUcb as Object
Dim sCRLF as String

Dim i&, j&, k&
sCRLF = CHR(13) & CHR(10)
FilePath = ThisComponent.getURL()
Mid (FilePath, Len(FilePath)-2 , 3, "txt") ' Выходной файл: тот же путь, то же имя, только расширение .txt
oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oOutputStream = createUnoService("com.sun.star.io.TextOutputStream")
If oUcb.Exists(FilePath) Then
oUcb.Kill(FilePath)
End If
oFile = oUcb.OpenFileReadWrite(FilePath)
oOutputStream.SetOutputStream(oFile.GetOutputStream)

oSheets = ThisComponent.getSheets()
For k = 0 To oSheets.getCount()-1
oSheet = oSheets.getByIndex(k)
oCursor = oSheet.createCursor()
oCursor.gotoEndOfUsedArea(True)
oDataArray = oCursor.getDataArray()
For j = LBound(oDataArray(0)) To UBound(oDataArray(0))
For i = LBound(oDataArray) To UBound(oDataArray)
oOutputStream.WriteString(CStr(oDataArray(i)(j)) & sCRLF)
Next i
oOutputStream.WriteString(sCRLF) ' В образце между колонками пустая строка была
Next j
Next k
oOutputStream.CloseOutput()
End Sub
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Андрей2014
Участник
**
Offline Offline

Сообщений: 38


« Ответ #2: 25 Апрель 2015, 00:14 »

Цитата:
В образце между колонками пустая строка была
Вы, наверное, имеете в виду не пустые строки, а пустые ряды между рядами 'ABCD'? - Да, моё упущение, я так расположил для наглядности (жаль, что движок форума не поддерживает тэгов рисования табличной сетки). На самом деле, никаких пустых строк или столбцов нет. Все столбцы от "A" до "AMJ" содержат данные (на всех листах), аналогично как и строки.

ps Система Gentoo Linux, запускать .vbs скрипты тот ещё геморрой Грустный
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!