mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
* Hartmut's csv2lyx script
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24620 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
e8b84b9cfb
commit
42aaa245db
@ -2659,6 +2659,7 @@ lib_scripts_files = Split('''
|
||||
TeXFiles.py
|
||||
clean_dvi.py
|
||||
convertDefault.py
|
||||
csv2lyx.py
|
||||
date.py
|
||||
ext_copy.py
|
||||
fen2ascii.py
|
||||
|
@ -1076,6 +1076,7 @@ scriptsdir = $(pkgdatadir)/scripts
|
||||
dist_scripts_PYTHON = \
|
||||
scripts/TeXFiles.py \
|
||||
scripts/clean_dvi.py \
|
||||
scripts/csv2lyx.py \
|
||||
scripts/convertDefault.py \
|
||||
scripts/date.py \
|
||||
scripts/ext_copy.py \
|
||||
|
@ -313,6 +313,7 @@ def checkFormatEntries(dtl_tools):
|
||||
#
|
||||
# entried that do not need checkProg
|
||||
addToRC(r'''\Format date "" "date command" "" "" "" ""
|
||||
\Format csv csv "Comma-separated values" "" "" "" "document"
|
||||
\Format fax "" Fax "" "" "" "document"
|
||||
\Format lyx lyx LyX "" "" "" ""
|
||||
\Format lyx13x lyx13 "LyX 1.3.x" "" "" "" "document"
|
||||
@ -503,6 +504,7 @@ def checkConverterEntries():
|
||||
#
|
||||
# Entries that do not need checkProg
|
||||
addToRC(r'''\converter lyxpreview ppm "python -tt $$s/scripts/lyxpreview2bitmap.py" ""
|
||||
\converter csv lyx "python -tt $$s/scripts/csv2lyx.py $$i $$o" ""
|
||||
\converter date dateout "python -tt $$s/scripts/date.py %d-%m-%Y > $$o" ""
|
||||
\converter docbook docbook-xml "cp $$i $$o" "xml"
|
||||
\converter fen asciichess "python -tt $$s/scripts/fen2ascii.py $$i $$o" ""
|
||||
|
152
lib/scripts/csv2lyx.py
Normal file
152
lib/scripts/csv2lyx.py
Normal file
@ -0,0 +1,152 @@
|
||||
#! /usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# file csv2lyx.py
|
||||
# This file is part of LyX, the document processor.
|
||||
# Licence details can be found in the file COPYING.
|
||||
|
||||
# author Hartmut Haase
|
||||
|
||||
# Full author contact details are available in file CREDITS
|
||||
|
||||
# This script reads a csv-table (file name.csv) and converts it into
|
||||
# a LyX-table for versions 1.5.0 and higher (LyX table format 276).
|
||||
# The original csv2lyx was witten by Antonio Gulino <antonio.gulino@tin.it>
|
||||
# in Perl for LyX 1.x and modified for LyX table format 276 by the author.
|
||||
#
|
||||
|
||||
|
||||
import os, re, string, sys, unicodedata
|
||||
|
||||
def error(message):
|
||||
sys.stderr.write(message + '\n')
|
||||
sys.exit(1)
|
||||
|
||||
# processing command line options
|
||||
if len(sys.argv) == 1 or sys.argv[1] == '--help':
|
||||
print '''Usage:
|
||||
csv2lyx [options] mycsvfile mytmptable.lyx
|
||||
|
||||
This script creates a LyX document containing a table
|
||||
from a comma-separated-value file. The LyX file has format 276
|
||||
and can be opened with LyX 1.5.0 and newer.
|
||||
|
||||
Options:
|
||||
-s separator column separator, default is Tab
|
||||
--help usage instructions
|
||||
|
||||
Remarks:
|
||||
If your .csv file contains special characters (e. g. umlauts,
|
||||
accented letters, etc.) make sure it is coded in UTF-8 (unicode).
|
||||
Else LyX will loose some cell contents.'''
|
||||
sys.exit(0)
|
||||
|
||||
# print len(sys.argv), sys.argv
|
||||
separator = '\t'
|
||||
infile = ""
|
||||
if len(sys.argv) == 3:
|
||||
infile = sys.argv[1]
|
||||
outfile = sys.argv[2]
|
||||
elif len(sys.argv) == 5:
|
||||
infile = sys.argv[3]
|
||||
outfile = sys.argv[4]
|
||||
if sys.argv[1] == '-s':
|
||||
separator = sys.argv[2]
|
||||
|
||||
if not os.path.exists(infile):
|
||||
error('File "%s" not found.' % infile)
|
||||
# read input
|
||||
finput = open(infile, 'r')
|
||||
rowcontent = finput.readlines()
|
||||
finput.close()
|
||||
num_rows = len(rowcontent) # number of lines
|
||||
# print 'num_rows ', num_rows
|
||||
i = 0
|
||||
num_cols = 1 # max columns
|
||||
while i < num_rows:
|
||||
# print len(rowcontent[i]), ' ', rowcontent[i]
|
||||
num_cols = max(num_cols, rowcontent[i].count(separator) + 1)
|
||||
i += 1
|
||||
# print num_cols
|
||||
|
||||
fout = open(outfile, 'w')
|
||||
#####################
|
||||
# write first part
|
||||
####################
|
||||
fout.write("""#csv2lyx created this file
|
||||
\lyxformat 276
|
||||
\\begin_document
|
||||
\\begin_header
|
||||
\\textclass article
|
||||
\\inputencoding auto
|
||||
\\font_roman default
|
||||
\\font_sans default
|
||||
\\font_typewriter default
|
||||
\\font_default_family default
|
||||
\\font_sc false
|
||||
\\font_osf false
|
||||
\\font_sf_scale 100
|
||||
\\font_tt_scale 100
|
||||
\\graphics default
|
||||
\\paperfontsize default
|
||||
\\papersize default
|
||||
\\use_geometry false
|
||||
\\use_amsmath 1
|
||||
\\use_esint 0
|
||||
\\cite_engine basic
|
||||
\\use_bibtopic false
|
||||
\\paperorientation portrait
|
||||
\\secnumdepth 3
|
||||
\\tocdepth 3
|
||||
\\paragraph_separation indent
|
||||
\\defskip medskip
|
||||
\\papercolumns 1
|
||||
\\papersides 1
|
||||
\\paperpagestyle default
|
||||
\\tracking_changes false
|
||||
\\output_changes false
|
||||
\\end_header
|
||||
|
||||
\\begin_body
|
||||
\\begin_layout Standard
|
||||
\\align left
|
||||
|
||||
\\begin_inset Tabular
|
||||
\n""")
|
||||
fout.write('<lyxtabular version="3" rows=' + str(num_rows) + ' columns=' + str(num_cols) + ' >\n')
|
||||
fout.write('<features>\n')
|
||||
#####################
|
||||
# write table
|
||||
####################
|
||||
i = 0
|
||||
while i < num_cols:
|
||||
fout.write('<column alignment="left" valignment="top" width="0pt">\n')
|
||||
i += 1
|
||||
j = 0
|
||||
while j < num_rows:
|
||||
fout.write('<row>\n')
|
||||
row = str(rowcontent[j])
|
||||
row = string.split(row,separator)
|
||||
#print j, ': ' , row
|
||||
############################
|
||||
# write contents of one line
|
||||
############################
|
||||
i = 0
|
||||
while i < num_cols:
|
||||
fout.write("""<cell alignment="left" valignment="top" usebox="none">
|
||||
\\begin_inset Text
|
||||
\\begin_layout Standard\n""")
|
||||
fout.write(row[i])
|
||||
fout.write('\\end_layout\n\\end_inset\n</cell>\n')
|
||||
i += 1
|
||||
fout.write('</row>\n')
|
||||
j += 1
|
||||
#####################
|
||||
# write last part
|
||||
####################
|
||||
fout.write("""</lyxtabular>
|
||||
\\end_inset
|
||||
\\end_layout
|
||||
\\end_body
|
||||
\\end_document\n""")
|
||||
fout.close()
|
Loading…
Reference in New Issue
Block a user