Импорт и экспорт ods файлов на PHP

Для чтения ods файлов, и не только их, но и xls (xml), csv, tab text, можно использовать библиотеку http://code.google.com/p/php-spreadsheetreader/. Как и написано на сайте, работать с ней довольно просто

require_once 'SpreadsheetReaderFactory.php';
$spreadsheetsFilePath = 'test.ods'; //or test.xls, test.csv, etc. 
$reader = SpreadsheetReaderFactory::reader($spreadsheetsFilePath);
$sheets = $reader->read($spreadsheetsFilePath);
echo $sheets[0][0][0];

Обнаружена проблема импорта ячеек, состоящих из нескольких строк, которую можно решить редактированием extract_tables_simplexml.xslt, в части, где идет разбор значения ячейки.

<xsl:template name="process-cell">
  <xsl:param name="type"/>
  <xsl:param name="count"/>
  <xsl:element name="{$type}">
    <xsl:if test="@office:value-type = 'float'">
      <xsl:attribute name="dataType">float</xsl:attribute>
    </xsl:if>
    <xsl:value-of select="text:p"/>
  </xsl:element>
  <xsl:if test="$count &gt; 1">
    <xsl:call-template name="process-cell">
    <xsl:with-param name="type" select="$type"/>
    <xsl:with-param name="count" select="$count - 1"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

Тут

<xsl:value-of select="text:p"/>

можно заменить, например на

<xsl:for-each select="text:p">
  <xsl:value-of select="." />
  <xsl:if test="position() != last()">&#160;</xsl:if>
</xsl:for-each>

Для генерации файлов ods удобно пользоваться библиотекой http://odsphpgenerator.lapinator.net/.

На сайте приведено много примеров использования, так что проблем быть не должно. Конечно, много чего в этой библиотеке не хватает, но либо можно дописать самостоятельно, либо дождаться новой версии.

Оставьте комментарий