From 8362bf63dea22bbf6736609b0f49c152f975eb63 Mon Sep 17 00:00:00 2001 From: tpearson Date: Wed, 20 Jan 2010 01:29:50 +0000 Subject: Added old abandoned KDE3 version of koffice git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- .../scripting/scripts/exporthtml/ExportHtml.py | 179 +++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100755 kspread/plugins/scripting/scripts/exporthtml/ExportHtml.py (limited to 'kspread/plugins/scripting/scripts/exporthtml/ExportHtml.py') diff --git a/kspread/plugins/scripting/scripts/exporthtml/ExportHtml.py b/kspread/plugins/scripting/scripts/exporthtml/ExportHtml.py new file mode 100755 index 000000000..2e2dfc317 --- /dev/null +++ b/kspread/plugins/scripting/scripts/exporthtml/ExportHtml.py @@ -0,0 +1,179 @@ +""" +KSpread Kross Python Script. + +Export to HTML File. + +Description: +This script exports data from KSpread to a HTML file. + +Author: +Sebastian Sauer + +Copyright: +Dual-licensed under LGPL v2+higher and the BSD license. +""" + +import os, sys + +try: + import qt +except (ImportError): + raise "Failed to import the required PyQt python module." + +class Dialog(qt.QDialog): + def __init__(self, scriptpath, parent): + self.scriptpath = scriptpath + + import krosskspreadcore + self.doc = krosskspreadcore.get("KSpreadDocument") + + import qt + qt.QDialog.__init__(self, parent, "Dialog", 1, qt.Qt.WDestructiveClose) + self.setCaption("Export to HTML File") + layout = qt.QVBoxLayout(self) + box = qt.QVBox(self) + box.setMargin(10) + box.setSpacing(10) + layout.addWidget(box) + + sheetbox = qt.QHBox(box) + sheetbox.setSpacing(6) + sheetlabel = qt.QLabel("Sheet:",sheetbox) + self.sheetcombo = qt.QComboBox(sheetbox) + currentsheetname = self.doc.currentSheet().name() + for sheetname in self.doc.sheetNames(): + self.sheetcombo.insertItem(sheetname) + if sheetname == currentsheetname: + self.sheetcombo.setCurrentItem(self.sheetcombo.count() - 1) + sheetlabel.setBuddy(self.sheetcombo) + sheetbox.setStretchFactor(self.sheetcombo,1) + + self.styles = { + "Paper" : + "html { background-color:#efefef; }" + "body { background-color:#fafafa; color:#303030; margin:1em; padding:1em; border:#606060 1px solid; }" + , + "Plain" : + "html { background-color:#ffffff; color:#000; }" + "body { margin:1em; }" + , + "Seawater" : + "html { background-color:#0000aa; }" + "body { background-color:#000066; color:#efefff; margin:1em; padding:1em; border:#00f 1px solid; }" + "h1 { color:#0000ff; }" + "th { color:#6666ff; }" + , + } + + stylebox = qt.QHBox(box) + stylebox.setSpacing(6) + stylelabel = qt.QLabel("Style:",stylebox) + self.stylecombo = qt.QComboBox(stylebox) + stylenames = self.styles.keys() + stylenames.sort() + for stylename in stylenames: + self.stylecombo.insertItem(stylename) + stylelabel.setBuddy(self.stylecombo) + stylebox.setStretchFactor(self.stylecombo,1) + + filebox = qt.QHBox(box) + filebox.setSpacing(6) + filelabel = qt.QLabel("File:",filebox) + self.fileedit = qt.QLineEdit(self.getDefaultFile(),filebox) + btn = qt.QPushButton("...",filebox) + qt.QObject.connect(btn, qt.SIGNAL("clicked()"),self.browseClicked) + filelabel.setBuddy(self.fileedit) + filebox.setStretchFactor(self.fileedit,1) + + btnbox = qt.QHBox(box) + btnbox.setSpacing(6) + okbtn = qt.QPushButton(btnbox) + okbtn.setText("Export") + okbtn.setDefault(True) + qt.QObject.connect(okbtn,qt.SIGNAL("clicked()"),self.startExport) + cancelbtn = qt.QPushButton(btnbox) + cancelbtn.setText("Cancel") + qt.QObject.connect(cancelbtn,qt.SIGNAL("clicked()"),self.close) + + box.setMinimumWidth(480) + + def browseClicked(self): + import qt + filename = str( qt.QFileDialog.getSaveFileName(str(self.fileedit.text()),"*.htm *.html *.xhtml;;*", self) ) + if filename != "": self.fileedit.setText(filename) + + def getDefaultFile(self): + import os + try: + homepath = os.getenv("HOME") + if not homepath: + import pwd + user = os.getenv("USER") or os.getenv("LOGNAME") + if not user: + pwent = pwd.getpwuid(os.getuid()) + else: + pwent = pwd.getpwnam(user) + homepath = pwent[6] + except (KeyError, ImportError): + homepath = os.curdir + return os.path.join(homepath, "kspreadexport.html") + + def startExport(self): + import qt + + sheetname = str( self.sheetcombo.currentText() ) + sheet = self.doc.sheetByName( sheetname ) + print "sheetname=%s sheet=%s" % (sheetname,sheet) + + filename = str( self.fileedit.text() ) + try: + file = open(filename, "w") + except IOError, (errno, strerror): + qt.QMessageBox.critical(self,"Error","Failed to create HTML file \"%s\"

%s
" % (filename,strerror)) + return + + file.write("\n") + file.write("\n") + file.write("\n") + file.write("%s\n" % sheetname) + + file.write("\n") + + file.write("\n") + file.write("

%s

\n" % sheetname) + + file.write("\n") + cell = sheet.firstCell() + prevrow = -1 + while cell: + #print "Cell col=%s row=%s value=%s" % (cell.column(),cell.row(),cell.value()) + + row = cell.row() + if row != prevrow: + prevrow = row + file.write("") + file.write("" % row) + + file.write("" % cell.value()) + + cell = cell.nextCell() + if cell == None or cell.row() != prevrow: + file.write("\n") + + file.write("
%s%s
\n") + file.write("\n") + + file.close() + self.close() + +if __name__ == "__main__": + scriptpath = os.getcwd() + qtapp = qt.QApplication(sys.argv) +else: + scriptpath = os.path.dirname(__name__) + qtapp = qt.qApp + +dialog = Dialog(scriptpath, qtapp.mainWidget()) +dialog.exec_loop() -- cgit v1.2.3