コマンドラインからlibreoffice calcテーブルに行を追加したい。しかし、どうすればいいかわかりません。
コマンドラインからlibreofficeを起動する方法を見つけました。
たとえば、iamが探しているもの:-The test.ods-file
before
Name Text
Hans Bla
Christian BlaBlub
私が入ります...
ubuntu> [a command -insert] Alf|test -file=test.ods
「Alf」と「test」がテーブルの次の行として追加されるように。
-後のtest.ods-file
:
Name Text
Hans Bla
Christian BlaBlub
Alf test
.ods
はアーカイブです。そのため、アーカイブを抽出する必要があります。
ドキュメント から:
XMLファイル構造
OpenDocumentファイル形式のドキュメントは、XMLファイルを含む圧縮されたZipアーカイブとして保存されます。これらのXMLファイルを表示するには、解凍プログラムでOpenDocumentファイルを開くことができます。 OpenDocumentファイルには、次のファイルとディレクトリが含まれています。
- ドキュメントのテキストコンテンツはcontent.xmlにあります。
だからそれはそれほど単純ではありません
[a command -insert] Alf|test -file=test.ods
xMLパーツも挿入する必要があるためです。
$ cd ~/tmp/
$ unzip ../test.ods
Archive: test.ods
extracting: mimetype
extracting: Thumbnails/thumbnail.png
inflating: settings.xml
inflating: content.xml
inflating: meta.xml
inflating: styles.xml
inflating: manifest.rdf
creating: Configurations2/images/Bitmaps/
creating: Configurations2/toolpanel/
creating: Configurations2/progressbar/
inflating: Configurations2/accelerator/current.xml
creating: Configurations2/floater/
creating: Configurations2/statusbar/
creating: Configurations2/toolbar/
creating: Configurations2/popupmenu/
creating: Configurations2/menubar/
inflating: META-INF/manifest.xml
Content.xmlを見て、最後の行の下に新しい行を追加する場合、次のようなものを追加する必要があります...
<table:table-row table:style-name="ro1">
<table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a2a2a2</text:p>
</table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b2b2b2</text:p>
</table:table-cell></table:table-row>
前
<table:named-expressions/>
次に、ファイルを再度Zipします(Zip -r ../test2.ods .
ファイルがあるディレクトリから)。
結果:
コマンドラインからファイルを編集するには、このコマンドを使用しました。サンプルを〜/ Downloadsに置き、そこにtmp /を作成してテストします。これに使用されるすべてのコマンド:
cd ~/Downloads/tmp/
unzip ../test.ods
sed 's#</table:table><table:named-expressions/>#<table:table-row table:style-name="ro1"><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a3a3a3</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>b3b3b3</text:p></table:table-cell></table:table-row>&#' content.xml > content2.xml
mv content2.xml content.xml
Zip -r ../test2.ods .
必要なのは、テキストセグメントを独自のものに置き換えることだけです。
Terdonの好意による新しいバージョン(変数を使用して読みやすくします):
$ from="</table:table><table:named-expressions/>"
$ to="<table:table-row table:style-name="ro1"><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a3a3a3</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>b3b3b3</text:p></table:table-cell></table:table-row>"
$ sed "s#$from#$to$from#" content.xml
「#」はセパレータです。テキストに「#」がある場合は、別のものを使用してください。