Работа с ODF(Open office) как с архивом

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Работа с ODF(Open office) как с архивом

Сообщение SoIAm » 19.12.2007 18:57:30

Может у кого есть исходный код по разархивированию ODF, поиску в нем определенных тегов, замены этих тегов на определенные выражения, вводимые пользователем в программе, и заархивированием опять в ODF
Буду премного благодарен, просто срочно нужно, а времени разбираться с этим совершенно нету
Или может уже есть какой компонент под лазарус?
SoIAm
незнакомец
 
Сообщения: 4
Зарегистрирован: 27.11.2007 15:02:37

Сообщение ViTality » 20.12.2007 11:21:34

PeaZip/ZipFile/ZlibAr+XMLRead, XMLWrite, DOM
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Сообщение jbond1981 » 20.12.2007 19:23:47

http://wiki.services.openoffice.org/wiki/AODL для .Net

http://wiki.services.openoffice.org/wiki/Odf4j для Ява.

Для Паскаля нет. Ни в каком виде. Тебе все прийдется делать ручками/писать самому библиотеку. А это очень сложно.

Пример кода для VB.Net:
Код: Выделить всё
Imports AODL.Document

    Sub ExportODF(ByVal FileName As String)
        'Create new spreadsheet document
        Dim spreadsheetDocument As New SpreadsheetDocuments.SpreadsheetDocument

        If System.IO.File.Exists(FileName) Then
            spreadsheetDocument.Load(FileName)
        Else
            spreadsheetDocument.[New]()
        End If

        'Create a new table

        Dim Jahr As Integer = CInt(JahrToolStripTextBox.Text)
        Dim Monat As Integer = MonatToolStripComboBox.SelectedIndex + 1

        Dim dt As New DateTime(Jahr, Monat, 1)

        Dim table As New Content.Tables.Table(spreadsheetDocument, dt.ToString("MMMM yy"), "")

        With DatenDataGridView
            For rowIndex As Integer = 0 To .RowCount - 1
                For colIndex As Integer = 1 To .ColumnCount - 1
                    Dim cell As Content.Tables.Cell = table.CreateCell()

                    Dim curItem As DataGridViewCell = .Item(colIndex, rowIndex)
                    Dim curValue As Object = curItem.Value

                    If Not IsNothing(curValue) Then
                        If IsNumeric(curValue) Then
                            cell.OfficeValueType = SpreadsheetDocuments.Tables.Style.OfficeValueTypes.Float
                        Else
                            cell.OfficeValueType = SpreadsheetDocuments.Tables.Style.OfficeValueTypes.String
                        End If

                        'cell.CellStyle.CellProperties.Border = AODL.Document.Styles.Border.NormalSolid

                        cell.OfficeValue = curValue.ToString
                    End If
                    table.InsertCellAt(rowIndex + 1, colIndex + 1, cell)
                Next
            Next
        End With
        'Insert table into the spreadsheet document
        spreadsheetDocument.TableCollection.Add(table)
        spreadsheetDocument.SaveTo(FileName)
    End Sub
jbond1981
новенький
 
Сообщения: 36
Зарегистрирован: 19.10.2007 16:30:37

Сообщение PublicJoke » 20.12.2007 22:04:52

Если вы хотите использовать документ в качестве шаблона для генерации отчета, можно попробовать заглянуть сюда: http://freepascal.ru/forum/viewtopic.php?t=2585&highlight=openoffice.
PublicJoke
новенький
 
Сообщения: 41
Зарегистрирован: 04.07.2006 12:21:07

Сообщение jbond1981 » 20.12.2007 23:27:47

uno-pas-bridge - это не решение проблемы. На компе может и не быть OO.

А File-Save As ODF нужен.

Совет: если язык не важен - выбирай .Net. Если нужна кроссплатформенность - Ява (хотя заявлена совместимость AODL с Моно).

uno-pas-bridge - если ты завязан на Паскале, на всех компах будет стоять ОО и по каким-то причинам тебя не устраивает бесплатный Turbo Delphi 2006 Explorer.
jbond1981
новенький
 
Сообщения: 36
Зарегистрирован: 19.10.2007 16:30:37

Сообщение SoIAm » 21.12.2007 12:15:34

uno-pas-bridge - если ты завязан на Паскале, на всех компах будет стоять ОО и по каким-то причинам тебя не устраивает бесплатный Turbo Delphi 2006 Explorer.
-------------------------------
Наверное так и поступлю, так как проект уже большой(это последнее, что осталось реализовать), переписывать на яве лень, пишется с учетом на кросс-платформенность. И ООо на машинах будет стоять

Благодарю всех за помощь
SoIAm
незнакомец
 
Сообщения: 4
Зарегистрирован: 27.11.2007 15:02:37


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 59

Рейтинг@Mail.ru
cron