mirror of
https://github.com/kennethreitz/tablib.git
synced 2026-06-05 23:10:17 +00:00
remove 2.x xlwt
This commit is contained in:
@@ -1,199 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=us-ascii' />
|
||||
<title>The xlwt Module</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>The xlwt Module</h1>
|
||||
<p /><p><b>A Python package for generating Microsoft Excel ™ spreadsheet files.
|
||||
</b></p>
|
||||
|
||||
<h2>General information</h2>
|
||||
|
||||
<h3>State of Documentation</h3>
|
||||
|
||||
<p>
|
||||
This documentation is currently incomplete. There may be methods and
|
||||
classes not included and any item marked with a <em
|
||||
style="color:red;">[NC]</em> is not complete and may have further
|
||||
parameters, methods, attributes and functionality that are not
|
||||
documented. In these cases, you'll have to refer to the source if the
|
||||
documentation provided is insufficient.
|
||||
</p>
|
||||
|
||||
</p>
|
||||
|
||||
<h2>Module Contents <em style="color:red;">[NC]</em></h2>
|
||||
<dl>
|
||||
<dt><b>easyxf</b> (function)</dt>
|
||||
<dd>
|
||||
<p>
|
||||
This function is used to create and configure XFStyle objects
|
||||
for use with (for example) the Worksheet.write method.
|
||||
</p>
|
||||
<dl>
|
||||
<dt><i>strg_to_parse</i></dt>
|
||||
<dd>
|
||||
<p>
|
||||
A string to be parsed to obtain attribute values for Alignment, Borders, Font,
|
||||
Pattern and Protection objects. Refer to the examples
|
||||
in the file .../examples/xlwt_easyxf_simple_demo.py and to the xf_dict
|
||||
dictionary in Style.py. Various synonyms including color/colour, center/centre and gray/grey
|
||||
are allowed. Case is irrelevant (except maybe in font names). '-' may be used instead
|
||||
of '_'.<br />
|
||||
Example: "font: bold on; align: wrap on, vert centre, horiz center"
|
||||
</p>
|
||||
</dd>
|
||||
<dt><i>num_format_str</i></dt>
|
||||
<dd>
|
||||
<p>
|
||||
To get the "number format string" of an existing cell whose format you want to reproduce,
|
||||
select the cell and click on Format/Cells/Number/Custom. Otherwise, refer to Excel help.<br />
|
||||
Examples: "#,##0.00", "dd/mm/yyyy"
|
||||
</p>
|
||||
</dd>
|
||||
<dt>Returns:</dt>
|
||||
<dd>
|
||||
An object of the XFstyle class
|
||||
</dd>
|
||||
</dl>
|
||||
<br />
|
||||
|
||||
</dd>
|
||||
|
||||
<dt><b>Workbook</b> (class) [<a href='#xlwt.Workbook-class'>#</a>]</dt>
|
||||
<dd>
|
||||
<p>The class to instantiate to create a workbook</p>
|
||||
<p>For more information about this class, see <a href='#xlwt.Workbook-class'><i>The Workbook Class</i></a>.</p>
|
||||
</dd>
|
||||
<dt><b>Worksheet</b> (class) [<a href='#xlwt.Worksheet-class'>#</a>]</dt>
|
||||
<dd>
|
||||
<p>A class to represent the contents of a sheet in a workbook.</p>
|
||||
<p>For more information about this class, see <a href='#xlwt.Worksheet-class'><i>The Worksheet Class</i></a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h2><a id='xlwt.Workbook-class' name='xlwt.Workbook-class'>The Workbook Class</a><em style="color:red;">[NC]</em></h2>
|
||||
<dl>
|
||||
<dt><b>Workbook(encoding='ascii',style_compression=0)</b> (class) [<a href='#xlwt.Workbook-class'>#</a>]</dt>
|
||||
<dd>
|
||||
<p>
|
||||
This is a class representing a workbook and all its contents.
|
||||
When creating Excel files with xlwt, you will normally start by
|
||||
instantiating an object of this class.
|
||||
</p>
|
||||
<dl>
|
||||
<dt><i>encoding</i></dt>
|
||||
<dd>
|
||||
<em style="color:red;">[NC]</em>
|
||||
</dd>
|
||||
<dt><i>style_compression</i></dt>
|
||||
<dd>
|
||||
<em style="color:red;">[NC]</em>
|
||||
</dd>
|
||||
<dt>Returns:</dt>
|
||||
<dd>
|
||||
An object of the <a href="#xlwt.Workbook-class">Workbook</a> class
|
||||
</dd>
|
||||
</dl>
|
||||
<br />
|
||||
</dd>
|
||||
<dt><a id='xlwt.Workbook.add_sheet-method' name='xlwt.Workbook.add_sheet-method'><b>add_sheet(sheetname)</b></a> [<a href='#xlwt.Workbook.add_sheet-method'>#</a>]</dt>
|
||||
<dd>
|
||||
<p>
|
||||
This method is used to create Worksheets in a Workbook.
|
||||
</p>
|
||||
<dl>
|
||||
<dt><i>sheetname</i></dt>
|
||||
<dd>
|
||||
The name to use for this sheet, as it will appear in the tabs at
|
||||
the bottom of the Excel application.
|
||||
</dd>
|
||||
<dt>Returns:</dt>
|
||||
<dd>
|
||||
An object of the <a href="#xlwt.Worksheet-class">Worksheet</a> class
|
||||
</dd>
|
||||
</dl>
|
||||
<br />
|
||||
</dd>
|
||||
<dt><a id='xlwt.Workbook.save-method' name='xlwt.Workbook.save-method'><b>save(filename_or_stream)</b></a> [<a href='#xlwt.Workbook.save-method'>#</a>]</dt>
|
||||
<dd>
|
||||
<p>
|
||||
This method is used to save Workbook to a file in native Excel format.
|
||||
</p>
|
||||
<dl>
|
||||
<dt><i>filename_or_stream</i></dt>
|
||||
<dd>
|
||||
<p>
|
||||
This can be a string containing a filename of the file, in which case
|
||||
the excel file is saved to disk using the name provided.
|
||||
</p>
|
||||
<p>
|
||||
It can also be a stream object with a write method, such as a
|
||||
StringIO, in which case the data for the excel file is written
|
||||
to the stream.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<br />
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h2><a id='xlwt.Worksheet-class' name='xlwt.Worksheet-class'>The Worksheet Class</a><em style="color:red;">[NC]</em></h2>
|
||||
<dl>
|
||||
<dt><b>Worksheet(sheetname, parent_book)</b> (class) [<a href='#xlwt.Worksheet-class'>#</a>]</dt>
|
||||
<dd>
|
||||
<p>
|
||||
This is a class representing the contents of a sheet in a workbook.
|
||||
</p>
|
||||
<p>
|
||||
WARNING: You don't normally create instances of this class
|
||||
yourself. They are returned from calls to <a href="#xlwt.Workbook.add_sheet-method">Workbook.add_sheet</a>
|
||||
</p>
|
||||
</dd>
|
||||
<dt><a id='xlwt.Worksheet.write-method'
|
||||
name='xlwt.Worksheet.write-method'><b>write(r, c, label="", style=Style.default_style)</b></a> [<a href='#xlwt.Worksheet.write-method'>#</a>]</dt>
|
||||
<dd>
|
||||
<p>
|
||||
This method is used to write a cell to a Worksheet..
|
||||
</p>
|
||||
<dl>
|
||||
<dt><i>r</i></dt>
|
||||
<dd>
|
||||
The zero-relative number of the row in the worksheet to which the cell should be written.
|
||||
</dd>
|
||||
<dt><i>c</i></dt>
|
||||
<dd>
|
||||
The zero-relative number of the column in the worksheet to which the cell should be written.
|
||||
</dd>
|
||||
<dt><i>label</i></dt>
|
||||
<dd>
|
||||
The data value to be written.
|
||||
An int, long, or decimal.Decimal instance is converted to float.
|
||||
A unicode instance is written as is.
|
||||
A str instance is converted to unicode using the encoding (default: 'ascii') specified
|
||||
when the Workbook instance was created.
|
||||
A datetime.datetime, datetime.date, or datetime.time instance is converted into Excel date format
|
||||
(a float representing the number of days since (typically) 1899-12-31T00:00:00,
|
||||
under the pretence that 1900 was a leap year).
|
||||
A bool instance will show up as TRUE or FALSE in Excel.
|
||||
None causes the cell to be blank -- no data, only formatting.
|
||||
An xlwt.Formula instance causes an Excel formula to be written.
|
||||
<em style="color:red;">[NC]</em>
|
||||
</dd>
|
||||
<dt><i>style</i></dt>
|
||||
<dd>
|
||||
A style -- also known as an XF (extended format) -- is an XFStyle object, which encapsulates
|
||||
the formatting applied to the cell and its contents. XFStyle objects are best set up using the
|
||||
<i>easyxf</i> function. They may also be set up by setting attributes in
|
||||
Alignment, Borders, Pattern, Font and Protection objects
|
||||
then setting those objects and a format string as attributes of an XFStyle object.
|
||||
<em style="color:red;">[NC]</em>
|
||||
</dd>
|
||||
</dl>
|
||||
<br />
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</body></html>
|
||||
@@ -1,35 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# tries stress SST, SAT and MSAT
|
||||
|
||||
from time import *
|
||||
from xlwt.Workbook import *
|
||||
from xlwt.Style import *
|
||||
|
||||
style = XFStyle()
|
||||
|
||||
wb = Workbook()
|
||||
ws0 = wb.add_sheet('0')
|
||||
|
||||
colcount = 200 + 1
|
||||
rowcount = 6000 + 1
|
||||
|
||||
t0 = time()
|
||||
print "\nstart: %s" % ctime(t0)
|
||||
|
||||
print "Filling..."
|
||||
for col in xrange(colcount):
|
||||
print "[%d]" % col,
|
||||
for row in xrange(rowcount):
|
||||
#ws0.write(row, col, "BIG(%d, %d)" % (row, col))
|
||||
ws0.write(row, col, "BIG")
|
||||
|
||||
t1 = time() - t0
|
||||
print "\nsince starting elapsed %.2f s" % (t1)
|
||||
|
||||
print "Storing..."
|
||||
wb.save('big-16Mb.xls')
|
||||
|
||||
t2 = time() - t0
|
||||
print "since starting elapsed %.2f s" % (t2)
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# tries stress SST, SAT and MSAT
|
||||
|
||||
from time import *
|
||||
from xlwt import *
|
||||
|
||||
style = XFStyle()
|
||||
|
||||
wb = Workbook()
|
||||
ws0 = wb.add_sheet('0')
|
||||
|
||||
colcount = 200 + 1
|
||||
rowcount = 6000 + 1
|
||||
|
||||
t0 = time()
|
||||
print "\nstart: %s" % ctime(t0)
|
||||
|
||||
print "Filling..."
|
||||
for col in xrange(colcount):
|
||||
print "[%d]" % col,
|
||||
for row in xrange(rowcount):
|
||||
ws0.write(row, col, "BIG(%d, %d)" % (row, col))
|
||||
#ws0.write(row, col, "BIG")
|
||||
|
||||
t1 = time() - t0
|
||||
print "\nsince starting elapsed %.2f s" % (t1)
|
||||
|
||||
print "Storing..."
|
||||
wb.save('big-35Mb.xls')
|
||||
|
||||
t2 = time() - t0
|
||||
print "since starting elapsed %.2f s" % (t2)
|
||||
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
font0 = Font()
|
||||
font0.name = 'Times New Roman'
|
||||
font0.struck_out = True
|
||||
font0.bold = True
|
||||
|
||||
style0 = XFStyle()
|
||||
style0.font = font0
|
||||
|
||||
|
||||
wb = Workbook()
|
||||
ws0 = wb.add_sheet('0')
|
||||
|
||||
ws0.write(1, 1, 'Test', style0)
|
||||
|
||||
for i in range(0, 0x53):
|
||||
borders = Borders()
|
||||
borders.left = i
|
||||
borders.right = i
|
||||
borders.top = i
|
||||
borders.bottom = i
|
||||
|
||||
style = XFStyle()
|
||||
style.borders = borders
|
||||
|
||||
ws0.write(i, 2, '', style)
|
||||
ws0.write(i, 3, hex(i), style0)
|
||||
|
||||
ws0.write_merge(5, 8, 6, 10, "")
|
||||
|
||||
wb.save('blanks.xls')
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
__rev_id__ = """$Id: col_width.py 3315 2008-03-14 14:44:52Z chris $"""
|
||||
|
||||
|
||||
from xlwt import *
|
||||
|
||||
w = Workbook()
|
||||
ws = w.add_sheet('Hey, Dude')
|
||||
|
||||
for i in range(6, 80):
|
||||
fnt = Font()
|
||||
fnt.height = i*20
|
||||
style = XFStyle()
|
||||
style.font = fnt
|
||||
ws.write(1, i, 'Test')
|
||||
ws.col(i).width = 0x0d00 + i
|
||||
w.save('col_width.xls')
|
||||
@@ -1,10 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1252 -*-
|
||||
# Copyright (C) 2007 John Machin
|
||||
|
||||
from xlwt import *
|
||||
|
||||
w = Workbook()
|
||||
w.country_code = 61
|
||||
ws = w.add_sheet('AU')
|
||||
w.save('country.xls')
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
from datetime import datetime
|
||||
|
||||
w = Workbook()
|
||||
ws = w.add_sheet('Hey, Dude')
|
||||
|
||||
fmts = [
|
||||
'M/D/YY',
|
||||
'D-MMM-YY',
|
||||
'D-MMM',
|
||||
'MMM-YY',
|
||||
'h:mm AM/PM',
|
||||
'h:mm:ss AM/PM',
|
||||
'h:mm',
|
||||
'h:mm:ss',
|
||||
'M/D/YY h:mm',
|
||||
'mm:ss',
|
||||
'[h]:mm:ss',
|
||||
'mm:ss.0',
|
||||
]
|
||||
|
||||
i = 0
|
||||
for fmt in fmts:
|
||||
ws.write(i, 0, fmt)
|
||||
|
||||
style = XFStyle()
|
||||
style.num_format_str = fmt
|
||||
|
||||
ws.write(i, 4, datetime.now(), style)
|
||||
|
||||
i += 1
|
||||
|
||||
w.save('dates.xls')
|
||||
@@ -1,38 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
font0 = Font()
|
||||
font0.name = 'Times New Roman'
|
||||
font0.struck_out = True
|
||||
font0.bold = True
|
||||
|
||||
style0 = XFStyle()
|
||||
style0.font = font0
|
||||
|
||||
|
||||
wb = Workbook()
|
||||
ws0 = wb.add_sheet('0')
|
||||
|
||||
ws0.write(1, 1, 'Test', style0)
|
||||
|
||||
for i in range(0, 0x53):
|
||||
fnt = Font()
|
||||
fnt.name = 'Arial'
|
||||
fnt.colour_index = i
|
||||
fnt.outline = True
|
||||
|
||||
borders = Borders()
|
||||
borders.left = i
|
||||
|
||||
style = XFStyle()
|
||||
style.font = fnt
|
||||
style.borders = borders
|
||||
|
||||
ws0.write(i, 2, 'colour', style)
|
||||
ws0.write(i, 3, hex(i), style0)
|
||||
|
||||
|
||||
wb.save('format.xls')
|
||||
@@ -1,34 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
from xlwt.ExcelFormulaParser import FormulaParseException
|
||||
|
||||
w = Workbook()
|
||||
ws = w.add_sheet('F')
|
||||
|
||||
## This example is a little silly since the formula building is
|
||||
## so simplistic that it often fails because the generated text
|
||||
## has the wrong number of parameters for the function being
|
||||
## tested.
|
||||
|
||||
i = 0
|
||||
succeed_count = 0
|
||||
fail_count = 0
|
||||
for n in sorted(ExcelMagic.std_func_by_name):
|
||||
ws.write(i, 0, n)
|
||||
text = n + "($A$1)"
|
||||
try:
|
||||
formula = Formula(text)
|
||||
except FormulaParseException,e:
|
||||
print "Could not parse %r: %s" % (text,e.args[0])
|
||||
fail_count += 1
|
||||
else:
|
||||
ws.write(i, 3, formula)
|
||||
succeed_count += 1
|
||||
i += 1
|
||||
|
||||
w.save('formula_names.xls')
|
||||
|
||||
print "succeeded with %i functions, failed with %i" % (succeed_count,fail_count)
|
||||
@@ -1,47 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
w = Workbook()
|
||||
ws = w.add_sheet('F')
|
||||
|
||||
ws.write(0, 0, Formula("-(1+1)"))
|
||||
ws.write(1, 0, Formula("-(1+1)/(-2-2)"))
|
||||
ws.write(2, 0, Formula("-(134.8780789+1)"))
|
||||
ws.write(3, 0, Formula("-(134.8780789e-10+1)"))
|
||||
ws.write(4, 0, Formula("-1/(1+1)+9344"))
|
||||
|
||||
ws.write(0, 1, Formula("-(1+1)"))
|
||||
ws.write(1, 1, Formula("-(1+1)/(-2-2)"))
|
||||
ws.write(2, 1, Formula("-(134.8780789+1)"))
|
||||
ws.write(3, 1, Formula("-(134.8780789e-10+1)"))
|
||||
ws.write(4, 1, Formula("-1/(1+1)+9344"))
|
||||
|
||||
ws.write(0, 2, Formula("A1*B1"))
|
||||
ws.write(1, 2, Formula("A2*B2"))
|
||||
ws.write(2, 2, Formula("A3*B3"))
|
||||
ws.write(3, 2, Formula("A4*B4*sin(pi()/4)"))
|
||||
ws.write(4, 2, Formula("A5%*B5*pi()/1000"))
|
||||
|
||||
##############
|
||||
## NOTE: parameters are separated by semicolon!!!
|
||||
##############
|
||||
|
||||
|
||||
ws.write(5, 2, Formula("C1+C2+C3+C4+C5/(C1+C2+C3+C4/(C1+C2+C3+C4/(C1+C2+C3+C4)+C5)+C5)-20.3e-2"))
|
||||
ws.write(5, 3, Formula("C1^2"))
|
||||
ws.write(6, 2, Formula("SUM(C1;C2;;;;;C3;;;C4)"))
|
||||
ws.write(6, 3, Formula("SUM($A$1:$C$5)"))
|
||||
|
||||
ws.write(7, 0, Formula('"lkjljllkllkl"'))
|
||||
ws.write(7, 1, Formula('"yuyiyiyiyi"'))
|
||||
ws.write(7, 2, Formula('A8 & B8 & A8'))
|
||||
ws.write(8, 2, Formula('now()'))
|
||||
|
||||
ws.write(10, 2, Formula('TRUE'))
|
||||
ws.write(11, 2, Formula('FALSE'))
|
||||
ws.write(12, 3, Formula('IF(A1>A2;3;"hkjhjkhk")'))
|
||||
|
||||
w.save('formulas.xls')
|
||||
@@ -1,28 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
f = Font()
|
||||
f.height = 20*72
|
||||
f.name = 'Verdana'
|
||||
f.bold = True
|
||||
f.underline = Font.UNDERLINE_DOUBLE
|
||||
f.colour_index = 4
|
||||
|
||||
h_style = XFStyle()
|
||||
h_style.font = f
|
||||
|
||||
w = Workbook()
|
||||
ws = w.add_sheet('F')
|
||||
|
||||
##############
|
||||
## NOTE: parameters are separated by semicolon!!!
|
||||
##############
|
||||
|
||||
n = "HYPERLINK"
|
||||
ws.write_merge(1, 1, 1, 10, Formula(n + '("http://www.irs.gov/pub/irs-pdf/f1000.pdf";"f1000.pdf")'), h_style)
|
||||
ws.write_merge(2, 2, 2, 25, Formula(n + '("mailto:roman.kiseliov@gmail.com?subject=pyExcelerator-feedback&Body=Hello,%20Roman!";"pyExcelerator-feedback")'), h_style)
|
||||
|
||||
w.save("hyperlinks.xls")
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
w = Workbook()
|
||||
ws = w.add_sheet('Image')
|
||||
ws.insert_bitmap('python.bmp', 2, 2)
|
||||
ws.insert_bitmap('python.bmp', 10, 2)
|
||||
|
||||
w.save('image.xls')
|
||||
@@ -1,39 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
fnt = Font()
|
||||
fnt.name = 'Arial'
|
||||
fnt.colour_index = 4
|
||||
fnt.bold = True
|
||||
|
||||
borders = Borders()
|
||||
borders.left = 6
|
||||
borders.right = 6
|
||||
borders.top = 6
|
||||
borders.bottom = 6
|
||||
|
||||
al = Alignment()
|
||||
al.horz = Alignment.HORZ_CENTER
|
||||
al.vert = Alignment.VERT_CENTER
|
||||
|
||||
style = XFStyle()
|
||||
style.font = fnt
|
||||
style.borders = borders
|
||||
style.alignment = al
|
||||
|
||||
|
||||
wb = Workbook()
|
||||
ws0 = wb.add_sheet('sheet0')
|
||||
ws1 = wb.add_sheet('sheet1')
|
||||
ws2 = wb.add_sheet('sheet2')
|
||||
|
||||
for i in range(0, 0x200, 2):
|
||||
ws0.write_merge(i, i+1, 1, 5, 'test %d' % i, style)
|
||||
ws1.write_merge(i, i, 1, 7, 'test %d' % i, style)
|
||||
ws2.write_merge(i, i+1, 1, 7 + (i%10), 'test %d' % i, style)
|
||||
|
||||
|
||||
wb.save('merged.xls')
|
||||
@@ -1,30 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
wb = Workbook()
|
||||
ws0 = wb.add_sheet('sheet0')
|
||||
|
||||
|
||||
fnt = Font()
|
||||
fnt.name = 'Arial'
|
||||
fnt.colour_index = 4
|
||||
fnt.bold = True
|
||||
|
||||
borders = Borders()
|
||||
borders.left = 6
|
||||
borders.right = 6
|
||||
borders.top = 6
|
||||
borders.bottom = 6
|
||||
|
||||
style = XFStyle()
|
||||
style.font = fnt
|
||||
style.borders = borders
|
||||
|
||||
ws0.write_merge(3, 3, 1, 5, 'test1', style)
|
||||
ws0.write_merge(4, 10, 1, 5, 'test2', style)
|
||||
ws0.col(1).width = 0x0d00
|
||||
|
||||
wb.save('merged0.xls')
|
||||
@@ -1,102 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
wb = Workbook()
|
||||
ws0 = wb.add_sheet('sheet0')
|
||||
|
||||
fnt1 = Font()
|
||||
fnt1.name = 'Verdana'
|
||||
fnt1.bold = True
|
||||
fnt1.height = 18*0x14
|
||||
|
||||
pat1 = Pattern()
|
||||
pat1.pattern = Pattern.SOLID_PATTERN
|
||||
pat1.pattern_fore_colour = 0x16
|
||||
|
||||
brd1 = Borders()
|
||||
brd1.left = 0x06
|
||||
brd1.right = 0x06
|
||||
brd1.top = 0x06
|
||||
brd1.bottom = 0x06
|
||||
|
||||
fnt2 = Font()
|
||||
fnt2.name = 'Verdana'
|
||||
fnt2.bold = True
|
||||
fnt2.height = 14*0x14
|
||||
|
||||
brd2 = Borders()
|
||||
brd2.left = 0x01
|
||||
brd2.right = 0x01
|
||||
brd2.top = 0x01
|
||||
brd2.bottom = 0x01
|
||||
|
||||
pat2 = Pattern()
|
||||
pat2.pattern = Pattern.SOLID_PATTERN
|
||||
pat2.pattern_fore_colour = 0x01F
|
||||
|
||||
fnt3 = Font()
|
||||
fnt3.name = 'Verdana'
|
||||
fnt3.bold = True
|
||||
fnt3.italic = True
|
||||
fnt3.height = 12*0x14
|
||||
|
||||
brd3 = Borders()
|
||||
brd3.left = 0x07
|
||||
brd3.right = 0x07
|
||||
brd3.top = 0x07
|
||||
brd3.bottom = 0x07
|
||||
|
||||
fnt4 = Font()
|
||||
|
||||
al1 = Alignment()
|
||||
al1.horz = Alignment.HORZ_CENTER
|
||||
al1.vert = Alignment.VERT_CENTER
|
||||
|
||||
al2 = Alignment()
|
||||
al2.horz = Alignment.HORZ_RIGHT
|
||||
al2.vert = Alignment.VERT_CENTER
|
||||
|
||||
al3 = Alignment()
|
||||
al3.horz = Alignment.HORZ_LEFT
|
||||
al3.vert = Alignment.VERT_CENTER
|
||||
|
||||
style1 = XFStyle()
|
||||
style1.font = fnt1
|
||||
style1.alignment = al1
|
||||
style1.pattern = pat1
|
||||
style1.borders = brd1
|
||||
|
||||
style2 = XFStyle()
|
||||
style2.font = fnt2
|
||||
style2.alignment = al1
|
||||
style2.pattern = pat2
|
||||
style2.borders = brd2
|
||||
|
||||
style3 = XFStyle()
|
||||
style3.font = fnt3
|
||||
style3.alignment = al1
|
||||
style3.pattern = pat2
|
||||
style3.borders = brd3
|
||||
|
||||
price_style = XFStyle()
|
||||
price_style.font = fnt4
|
||||
price_style.alignment = al2
|
||||
price_style.borders = brd3
|
||||
price_style.num_format_str = '_(#,##0.00_) "money"'
|
||||
|
||||
ware_style = XFStyle()
|
||||
ware_style.font = fnt4
|
||||
ware_style.alignment = al3
|
||||
ware_style.borders = brd3
|
||||
|
||||
|
||||
ws0.merge(3, 3, 1, 5, style1)
|
||||
ws0.merge(4, 10, 1, 6, style2)
|
||||
ws0.merge(14, 16, 1, 7, style3)
|
||||
ws0.col(1).width = 0x0d00
|
||||
|
||||
|
||||
wb.save('merged1.xls')
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
w = Workbook()
|
||||
ws = w.add_sheet('xlwt was here')
|
||||
w.save('mini.xls')
|
||||
@@ -1,60 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
w = Workbook()
|
||||
ws = w.add_sheet('Hey, Dude')
|
||||
|
||||
fmts = [
|
||||
'general',
|
||||
'0',
|
||||
'0.00',
|
||||
'#,##0',
|
||||
'#,##0.00',
|
||||
'"$"#,##0_);("$"#,##',
|
||||
'"$"#,##0_);[Red]("$"#,##',
|
||||
'"$"#,##0.00_);("$"#,##',
|
||||
'"$"#,##0.00_);[Red]("$"#,##',
|
||||
'0%',
|
||||
'0.00%',
|
||||
'0.00E+00',
|
||||
'# ?/?',
|
||||
'# ??/??',
|
||||
'M/D/YY',
|
||||
'D-MMM-YY',
|
||||
'D-MMM',
|
||||
'MMM-YY',
|
||||
'h:mm AM/PM',
|
||||
'h:mm:ss AM/PM',
|
||||
'h:mm',
|
||||
'h:mm:ss',
|
||||
'M/D/YY h:mm',
|
||||
'_(#,##0_);(#,##0)',
|
||||
'_(#,##0_);[Red](#,##0)',
|
||||
'_(#,##0.00_);(#,##0.00)',
|
||||
'_(#,##0.00_);[Red](#,##0.00)',
|
||||
'_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',
|
||||
'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',
|
||||
'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',
|
||||
'_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',
|
||||
'mm:ss',
|
||||
'[h]:mm:ss',
|
||||
'mm:ss.0',
|
||||
'##0.0E+0',
|
||||
'@'
|
||||
]
|
||||
|
||||
i = 0
|
||||
for fmt in fmts:
|
||||
ws.write(i, 0, fmt)
|
||||
|
||||
style = XFStyle()
|
||||
style.num_format_str = fmt
|
||||
|
||||
ws.write(i, 4, -1278.9078, style)
|
||||
|
||||
i += 1
|
||||
|
||||
w.save('num_formats.xls')
|
||||
@@ -1,25 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
w = Workbook()
|
||||
ws = w.add_sheet('Hey, Dude')
|
||||
|
||||
ws.write(0, 0, 1)
|
||||
ws.write(1, 0, 1.23)
|
||||
ws.write(2, 0, 12345678)
|
||||
ws.write(3, 0, 123456.78)
|
||||
|
||||
ws.write(0, 1, -1)
|
||||
ws.write(1, 1, -1.23)
|
||||
ws.write(2, 1, -12345678)
|
||||
ws.write(3, 1, -123456.78)
|
||||
|
||||
ws.write(0, 2, -17867868678687.0)
|
||||
ws.write(1, 2, -1.23e-5)
|
||||
ws.write(2, 2, -12345678.90780980)
|
||||
ws.write(3, 2, -123456.78)
|
||||
|
||||
w.save('numbers.xls')
|
||||
@@ -1,113 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
fnt = Font()
|
||||
fnt.name = 'Arial'
|
||||
fnt.colour_index = 4
|
||||
fnt.bold = True
|
||||
|
||||
borders = Borders()
|
||||
borders.left = 6
|
||||
borders.right = 6
|
||||
borders.top = 6
|
||||
borders.bottom = 6
|
||||
|
||||
style = XFStyle()
|
||||
style.font = fnt
|
||||
style.borders = borders
|
||||
|
||||
wb = Workbook()
|
||||
|
||||
ws0 = wb.add_sheet('Rows Outline')
|
||||
|
||||
ws0.write_merge(1, 1, 1, 5, 'test 1', style)
|
||||
ws0.write_merge(2, 2, 1, 4, 'test 1', style)
|
||||
ws0.write_merge(3, 3, 1, 3, 'test 2', style)
|
||||
ws0.write_merge(4, 4, 1, 4, 'test 1', style)
|
||||
ws0.write_merge(5, 5, 1, 4, 'test 3', style)
|
||||
ws0.write_merge(6, 6, 1, 5, 'test 1', style)
|
||||
ws0.write_merge(7, 7, 1, 5, 'test 4', style)
|
||||
ws0.write_merge(8, 8, 1, 4, 'test 1', style)
|
||||
ws0.write_merge(9, 9, 1, 3, 'test 5', style)
|
||||
|
||||
ws0.row(1).level = 1
|
||||
ws0.row(2).level = 1
|
||||
ws0.row(3).level = 2
|
||||
ws0.row(4).level = 2
|
||||
ws0.row(5).level = 2
|
||||
ws0.row(6).level = 2
|
||||
ws0.row(7).level = 2
|
||||
ws0.row(8).level = 1
|
||||
ws0.row(9).level = 1
|
||||
|
||||
|
||||
ws1 = wb.add_sheet('Columns Outline')
|
||||
|
||||
ws1.write_merge(1, 1, 1, 5, 'test 1', style)
|
||||
ws1.write_merge(2, 2, 1, 4, 'test 1', style)
|
||||
ws1.write_merge(3, 3, 1, 3, 'test 2', style)
|
||||
ws1.write_merge(4, 4, 1, 4, 'test 1', style)
|
||||
ws1.write_merge(5, 5, 1, 4, 'test 3', style)
|
||||
ws1.write_merge(6, 6, 1, 5, 'test 1', style)
|
||||
ws1.write_merge(7, 7, 1, 5, 'test 4', style)
|
||||
ws1.write_merge(8, 8, 1, 4, 'test 1', style)
|
||||
ws1.write_merge(9, 9, 1, 3, 'test 5', style)
|
||||
|
||||
ws1.col(1).level = 1
|
||||
ws1.col(2).level = 1
|
||||
ws1.col(3).level = 2
|
||||
ws1.col(4).level = 2
|
||||
ws1.col(5).level = 2
|
||||
ws1.col(6).level = 2
|
||||
ws1.col(7).level = 2
|
||||
ws1.col(8).level = 1
|
||||
ws1.col(9).level = 1
|
||||
|
||||
|
||||
ws2 = wb.add_sheet('Rows and Columns Outline')
|
||||
|
||||
ws2.write_merge(1, 1, 1, 5, 'test 1', style)
|
||||
ws2.write_merge(2, 2, 1, 4, 'test 1', style)
|
||||
ws2.write_merge(3, 3, 1, 3, 'test 2', style)
|
||||
ws2.write_merge(4, 4, 1, 4, 'test 1', style)
|
||||
ws2.write_merge(5, 5, 1, 4, 'test 3', style)
|
||||
ws2.write_merge(6, 6, 1, 5, 'test 1', style)
|
||||
ws2.write_merge(7, 7, 1, 5, 'test 4', style)
|
||||
ws2.write_merge(8, 8, 1, 4, 'test 1', style)
|
||||
ws2.write_merge(9, 9, 1, 3, 'test 5', style)
|
||||
|
||||
ws2.row(1).level = 1
|
||||
ws2.row(2).level = 1
|
||||
ws2.row(3).level = 2
|
||||
ws2.row(4).level = 2
|
||||
ws2.row(5).level = 2
|
||||
ws2.row(6).level = 2
|
||||
ws2.row(7).level = 2
|
||||
ws2.row(8).level = 1
|
||||
ws2.row(9).level = 1
|
||||
|
||||
ws2.write_merge(1, 1, 1, 5, 'test 1', style)
|
||||
ws2.write_merge(2, 2, 1, 4, 'test 1', style)
|
||||
ws2.write_merge(3, 3, 1, 3, 'test 2', style)
|
||||
ws2.write_merge(4, 4, 1, 4, 'test 1', style)
|
||||
ws2.write_merge(5, 5, 1, 4, 'test 3', style)
|
||||
ws2.write_merge(6, 6, 1, 5, 'test 1', style)
|
||||
ws2.write_merge(7, 7, 1, 5, 'test 4', style)
|
||||
ws2.write_merge(8, 8, 1, 4, 'test 1', style)
|
||||
ws2.write_merge(9, 9, 1, 3, 'test 5', style)
|
||||
|
||||
ws2.col(1).level = 1
|
||||
ws2.col(2).level = 1
|
||||
ws2.col(3).level = 2
|
||||
ws2.col(4).level = 2
|
||||
ws2.col(5).level = 2
|
||||
ws2.col(6).level = 2
|
||||
ws2.col(7).level = 2
|
||||
ws2.col(8).level = 1
|
||||
ws2.col(9).level = 1
|
||||
|
||||
|
||||
wb.save('outline.xls')
|
||||
@@ -1,58 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
w = Workbook()
|
||||
ws1 = w.add_sheet('sheet 1')
|
||||
ws2 = w.add_sheet('sheet 2')
|
||||
ws3 = w.add_sheet('sheet 3')
|
||||
ws4 = w.add_sheet('sheet 4')
|
||||
ws5 = w.add_sheet('sheet 5')
|
||||
ws6 = w.add_sheet('sheet 6')
|
||||
|
||||
for i in range(0x100):
|
||||
ws1.write(i/0x10, i%0x10, i)
|
||||
|
||||
for i in range(0x100):
|
||||
ws2.write(i/0x10, i%0x10, i)
|
||||
|
||||
for i in range(0x100):
|
||||
ws3.write(i/0x10, i%0x10, i)
|
||||
|
||||
for i in range(0x100):
|
||||
ws4.write(i/0x10, i%0x10, i)
|
||||
|
||||
for i in range(0x100):
|
||||
ws5.write(i/0x10, i%0x10, i)
|
||||
|
||||
for i in range(0x100):
|
||||
ws6.write(i/0x10, i%0x10, i)
|
||||
|
||||
ws1.panes_frozen = True
|
||||
ws1.horz_split_pos = 2
|
||||
|
||||
ws2.panes_frozen = True
|
||||
ws2.vert_split_pos = 2
|
||||
|
||||
ws3.panes_frozen = True
|
||||
ws3.horz_split_pos = 1
|
||||
ws3.vert_split_pos = 1
|
||||
|
||||
ws4.panes_frozen = False
|
||||
ws4.horz_split_pos = 12
|
||||
ws4.horz_split_first_visible = 2
|
||||
|
||||
ws5.panes_frozen = False
|
||||
ws5.vert_split_pos = 40
|
||||
ws4.vert_split_first_visible = 2
|
||||
|
||||
ws6.panes_frozen = False
|
||||
ws6.horz_split_pos = 12
|
||||
ws4.horz_split_first_visible = 2
|
||||
ws6.vert_split_pos = 40
|
||||
ws4.vert_split_first_visible = 2
|
||||
|
||||
w.save('panes.xls')
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
from xlwt import ExcelFormulaParser, ExcelFormula
|
||||
import sys
|
||||
|
||||
f = ExcelFormula.Formula(
|
||||
""" -((1.80 + 2.898 * 1)/(1.80 + 2.898))*
|
||||
AVERAGE((1.80 + 2.898 * 1)/(1.80 + 2.898);
|
||||
(1.80 + 2.898 * 1)/(1.80 + 2.898);
|
||||
(1.80 + 2.898 * 1)/(1.80 + 2.898)) +
|
||||
SIN(PI()/4)""")
|
||||
|
||||
#for t in f.rpn():
|
||||
# print "%15s %15s" % (ExcelFormulaParser.PtgNames[t[0]], t[1])
|
||||
@@ -1,122 +0,0 @@
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
fnt = Font()
|
||||
fnt.name = 'Arial'
|
||||
fnt.colour_index = 4
|
||||
fnt.bold = True
|
||||
|
||||
borders = Borders()
|
||||
borders.left = 6
|
||||
borders.right = 6
|
||||
borders.top = 6
|
||||
borders.bottom = 6
|
||||
|
||||
style = XFStyle()
|
||||
style.font = fnt
|
||||
style.borders = borders
|
||||
|
||||
wb = Workbook()
|
||||
|
||||
ws0 = wb.add_sheet('Rows Outline')
|
||||
|
||||
ws0.write_merge(1, 1, 1, 5, 'test 1', style)
|
||||
ws0.write_merge(2, 2, 1, 4, 'test 1', style)
|
||||
ws0.write_merge(3, 3, 1, 3, 'test 2', style)
|
||||
ws0.write_merge(4, 4, 1, 4, 'test 1', style)
|
||||
ws0.write_merge(5, 5, 1, 4, 'test 3', style)
|
||||
ws0.write_merge(6, 6, 1, 5, 'test 1', style)
|
||||
ws0.write_merge(7, 7, 1, 5, 'test 4', style)
|
||||
ws0.write_merge(8, 8, 1, 4, 'test 1', style)
|
||||
ws0.write_merge(9, 9, 1, 3, 'test 5', style)
|
||||
|
||||
ws0.row(1).level = 1
|
||||
ws0.row(2).level = 1
|
||||
ws0.row(3).level = 2
|
||||
ws0.row(4).level = 2
|
||||
ws0.row(5).level = 2
|
||||
ws0.row(6).level = 2
|
||||
ws0.row(7).level = 2
|
||||
ws0.row(8).level = 1
|
||||
ws0.row(9).level = 1
|
||||
|
||||
|
||||
ws1 = wb.add_sheet('Columns Outline')
|
||||
|
||||
ws1.write_merge(1, 1, 1, 5, 'test 1', style)
|
||||
ws1.write_merge(2, 2, 1, 4, 'test 1', style)
|
||||
ws1.write_merge(3, 3, 1, 3, 'test 2', style)
|
||||
ws1.write_merge(4, 4, 1, 4, 'test 1', style)
|
||||
ws1.write_merge(5, 5, 1, 4, 'test 3', style)
|
||||
ws1.write_merge(6, 6, 1, 5, 'test 1', style)
|
||||
ws1.write_merge(7, 7, 1, 5, 'test 4', style)
|
||||
ws1.write_merge(8, 8, 1, 4, 'test 1', style)
|
||||
ws1.write_merge(9, 9, 1, 3, 'test 5', style)
|
||||
|
||||
ws1.col(1).level = 1
|
||||
ws1.col(2).level = 1
|
||||
ws1.col(3).level = 2
|
||||
ws1.col(4).level = 2
|
||||
ws1.col(5).level = 2
|
||||
ws1.col(6).level = 2
|
||||
ws1.col(7).level = 2
|
||||
ws1.col(8).level = 1
|
||||
ws1.col(9).level = 1
|
||||
|
||||
|
||||
ws2 = wb.add_sheet('Rows and Columns Outline')
|
||||
|
||||
ws2.write_merge(1, 1, 1, 5, 'test 1', style)
|
||||
ws2.write_merge(2, 2, 1, 4, 'test 1', style)
|
||||
ws2.write_merge(3, 3, 1, 3, 'test 2', style)
|
||||
ws2.write_merge(4, 4, 1, 4, 'test 1', style)
|
||||
ws2.write_merge(5, 5, 1, 4, 'test 3', style)
|
||||
ws2.write_merge(6, 6, 1, 5, 'test 1', style)
|
||||
ws2.write_merge(7, 7, 1, 5, 'test 4', style)
|
||||
ws2.write_merge(8, 8, 1, 4, 'test 1', style)
|
||||
ws2.write_merge(9, 9, 1, 3, 'test 5', style)
|
||||
|
||||
ws2.row(1).level = 1
|
||||
ws2.row(2).level = 1
|
||||
ws2.row(3).level = 2
|
||||
ws2.row(4).level = 2
|
||||
ws2.row(5).level = 2
|
||||
ws2.row(6).level = 2
|
||||
ws2.row(7).level = 2
|
||||
ws2.row(8).level = 1
|
||||
ws2.row(9).level = 1
|
||||
|
||||
ws2.col(1).level = 1
|
||||
ws2.col(2).level = 1
|
||||
ws2.col(3).level = 2
|
||||
ws2.col(4).level = 2
|
||||
ws2.col(5).level = 2
|
||||
ws2.col(6).level = 2
|
||||
ws2.col(7).level = 2
|
||||
ws2.col(8).level = 1
|
||||
ws2.col(9).level = 1
|
||||
|
||||
|
||||
ws0.protect = True
|
||||
ws0.wnd_protect = True
|
||||
ws0.obj_protect = True
|
||||
ws0.scen_protect = True
|
||||
ws0.password = "123456"
|
||||
|
||||
ws1.protect = True
|
||||
ws1.wnd_protect = True
|
||||
ws1.obj_protect = True
|
||||
ws1.scen_protect = True
|
||||
ws1.password = "abcdefghij"
|
||||
|
||||
ws2.protect = True
|
||||
ws2.wnd_protect = True
|
||||
ws2.obj_protect = True
|
||||
ws2.scen_protect = True
|
||||
ws2.password = "ok"
|
||||
|
||||
wb.protect = True
|
||||
wb.wnd_protect = True
|
||||
wb.obj_protect = True
|
||||
wb.save('protection.xls')
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 37 KiB |
@@ -1,17 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
w = Workbook()
|
||||
ws = w.add_sheet('Hey, Dude')
|
||||
|
||||
for i in range(6, 80):
|
||||
fnt = Font()
|
||||
fnt.height = i*20
|
||||
style = XFStyle()
|
||||
style.font = fnt
|
||||
ws.write(i, 1, 'Test')
|
||||
ws.row(i).set_style(style)
|
||||
w.save('row_styles.xls')
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
__rev_id__ = """$Id: row_styles_empty.py 3309 2008-03-14 11:04:30Z chris $"""
|
||||
|
||||
|
||||
from pyExcelerator import *
|
||||
|
||||
w = Workbook()
|
||||
ws = w.add_sheet('Hey, Dude')
|
||||
|
||||
for i in range(6, 80):
|
||||
fnt = Font()
|
||||
fnt.height = i*20
|
||||
style = XFStyle()
|
||||
style.font = fnt
|
||||
ws.row(i).set_style(style)
|
||||
w.save('row_styles_empty.xls')
|
||||
@@ -1,24 +0,0 @@
|
||||
import xlwt
|
||||
from datetime import datetime
|
||||
|
||||
font0 = xlwt.Font()
|
||||
font0.name = 'Times New Roman'
|
||||
font0.colour_index = 2
|
||||
font0.bold = True
|
||||
|
||||
style0 = xlwt.XFStyle()
|
||||
style0.font = font0
|
||||
|
||||
style1 = xlwt.XFStyle()
|
||||
style1.num_format_str = 'D-MMM-YY'
|
||||
|
||||
wb = xlwt.Workbook()
|
||||
ws = wb.add_sheet('A Test Sheet')
|
||||
|
||||
ws.write(0, 0, 'Test', style0)
|
||||
ws.write(1, 0, datetime.now(), style1)
|
||||
ws.write(2, 0, 1)
|
||||
ws.write(2, 1, 1)
|
||||
ws.write(2, 2, xlwt.Formula("A3+B3"))
|
||||
|
||||
wb.save('example.xls')
|
||||
@@ -1,52 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
font0 = Formatting.Font()
|
||||
font0.name = 'Arial'
|
||||
font1 = Formatting.Font()
|
||||
font1.name = 'Arial Cyr'
|
||||
font2 = Formatting.Font()
|
||||
font2.name = 'Times New Roman'
|
||||
font3 = Formatting.Font()
|
||||
font3.name = 'Courier New Cyr'
|
||||
|
||||
num_format0 = '0.00000'
|
||||
num_format1 = '0.000000'
|
||||
num_format2 = '0.0000000'
|
||||
num_format3 = '0.00000000'
|
||||
|
||||
st0 = XFStyle()
|
||||
st1 = XFStyle()
|
||||
st2 = XFStyle()
|
||||
st3 = XFStyle()
|
||||
st4 = XFStyle()
|
||||
|
||||
st0.font = font0
|
||||
st0.num_format = num_format0
|
||||
|
||||
st1.font = font1
|
||||
st1.num_format = num_format1
|
||||
|
||||
st2.font = font2
|
||||
st2.num_format = num_format2
|
||||
|
||||
st3.font = font3
|
||||
st3.num_format = num_format3
|
||||
|
||||
wb = Workbook()
|
||||
|
||||
wb.add_style(st0)
|
||||
wb.add_style(st1)
|
||||
wb.add_style(st2)
|
||||
wb.add_style(st3)
|
||||
|
||||
ws0 = wb.add_sheet('0')
|
||||
ws0.write(0, 0, 'Olya'*0x4000, st0)
|
||||
|
||||
#for i in range(0, 0x10):
|
||||
# ws0.write(i, 2, ('%d'%i)*0x4000, st1)
|
||||
|
||||
wb.save('sst.xls')
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
import xlwt
|
||||
|
||||
# Strings passed to (for example) Worksheet.write can be unicode objects,
|
||||
# or str (8-bit) objects, which are then decoded into unicode.
|
||||
# The encoding to be used defaults to 'ascii'. This can be overridden
|
||||
# when the Workbook instance is created:
|
||||
|
||||
book = xlwt.Workbook(encoding='cp1251')
|
||||
sheet = book.add_sheet('cp1251-demo')
|
||||
sheet.write(0, 0, '\xce\xeb\xff')
|
||||
book.save('unicode0.xls')
|
||||
@@ -1,28 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
w = Workbook()
|
||||
ws1 = w.add_sheet(u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER BETA}\N{GREEK SMALL LETTER GAMMA}')
|
||||
|
||||
ws1.write(0, 0, u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER BETA}\N{GREEK SMALL LETTER GAMMA}')
|
||||
ws1.write(1, 1, u'\N{GREEK SMALL LETTER DELTA}x = 1 + \N{GREEK SMALL LETTER DELTA}')
|
||||
|
||||
ws1.write(2,0, u'A\u2262\u0391.') # RFC2152 example
|
||||
ws1.write(3,0, u'Hi Mom -\u263a-!') # RFC2152 example
|
||||
ws1.write(4,0, u'\u65E5\u672C\u8A9E') # RFC2152 example
|
||||
ws1.write(5,0, u'Item 3 is \u00a31.') # RFC2152 example
|
||||
ws1.write(8,0, u'\N{INTEGRAL}') # RFC2152 example
|
||||
|
||||
w.add_sheet(u'A\u2262\u0391.') # RFC2152 example
|
||||
w.add_sheet(u'Hi Mom -\u263a-!') # RFC2152 example
|
||||
one_more_ws = w.add_sheet(u'\u65E5\u672C\u8A9E') # RFC2152 example
|
||||
w.add_sheet(u'Item 3 is \u00a31.') # RFC2152 example
|
||||
|
||||
one_more_ws.write(0, 0, u'\u2665\u2665')
|
||||
|
||||
w.add_sheet(u'\N{GREEK SMALL LETTER ETA WITH TONOS}')
|
||||
w.save('unicode1.xls')
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: windows-1251 -*-
|
||||
# Copyright (C) 2005 Kiseliov Roman
|
||||
|
||||
from xlwt import *
|
||||
|
||||
w = Workbook()
|
||||
ws1 = w.add_sheet(u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER BETA}\N{GREEK SMALL LETTER GAMMA}\u2665\u041e\u041b\u042f\u2665')
|
||||
|
||||
fnt = Font()
|
||||
fnt.height = 26*20
|
||||
style = XFStyle()
|
||||
style.font = fnt
|
||||
|
||||
for i in range(0x10000):
|
||||
ws1.write(i/0x10, i%0x10, unichr(i), style)
|
||||
|
||||
w.save('unicode2.xls')
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
props = \
|
||||
[
|
||||
'name',
|
||||
'parent',
|
||||
'rows',
|
||||
'cols',
|
||||
'merged_ranges',
|
||||
'bmp_rec',
|
||||
'show_formulas',
|
||||
'show_grid',
|
||||
'show_headers',
|
||||
'panes_frozen',
|
||||
'show_empty_as_zero',
|
||||
'auto_colour_grid',
|
||||
'cols_right_to_left',
|
||||
'show_outline',
|
||||
'remove_splits',
|
||||
'selected',
|
||||
'hidden',
|
||||
'page_preview',
|
||||
'first_visible_row',
|
||||
'first_visible_col',
|
||||
'grid_colour',
|
||||
'preview_magn',
|
||||
'normal_magn',
|
||||
'row_gut_width',
|
||||
'col_gut_height',
|
||||
'show_auto_page_breaks',
|
||||
'dialogue_sheet',
|
||||
'auto_style_outline',
|
||||
'outline_below',
|
||||
'outline_right',
|
||||
'fit_num_pages',
|
||||
'show_row_outline',
|
||||
'show_col_outline',
|
||||
'alt_expr_eval',
|
||||
'alt_formula_entries',
|
||||
'row_default_height',
|
||||
'col_default_width',
|
||||
'calc_mode',
|
||||
'calc_count',
|
||||
'RC_ref_mode',
|
||||
'iterations_on',
|
||||
'delta',
|
||||
'save_recalc',
|
||||
'print_headers',
|
||||
'print_grid',
|
||||
'grid_set',
|
||||
'vert_page_breaks',
|
||||
'horz_page_breaks',
|
||||
'header_str',
|
||||
'footer_str',
|
||||
'print_centered_vert',
|
||||
'print_centered_horz',
|
||||
'left_margin',
|
||||
'right_margin',
|
||||
'top_margin',
|
||||
'bottom_margin',
|
||||
'paper_size_code',
|
||||
'print_scaling',
|
||||
'start_page_number',
|
||||
'fit_width_to_pages',
|
||||
'fit_height_to_pages',
|
||||
'print_in_rows',
|
||||
'portrait',
|
||||
'print_not_colour',
|
||||
'print_draft',
|
||||
'print_notes',
|
||||
'print_notes_at_end',
|
||||
'print_omit_errors',
|
||||
'print_hres',
|
||||
'print_vres',
|
||||
'header_margin',
|
||||
'footer_margin',
|
||||
'copies_num',
|
||||
]
|
||||
|
||||
from xlwt import *
|
||||
|
||||
wb = Workbook()
|
||||
ws = wb.add_sheet('sheet')
|
||||
|
||||
print ws.name
|
||||
print ws.parent
|
||||
print ws.rows
|
||||
print ws.cols
|
||||
print ws.merged_ranges
|
||||
print ws.bmp_rec
|
||||
print ws.show_formulas
|
||||
print ws.show_grid
|
||||
print ws.show_headers
|
||||
print ws.panes_frozen
|
||||
print ws.show_empty_as_zero
|
||||
print ws.auto_colour_grid
|
||||
print ws.cols_right_to_left
|
||||
print ws.show_outline
|
||||
print ws.remove_splits
|
||||
print ws.selected
|
||||
# print ws.hidden
|
||||
print ws.page_preview
|
||||
print ws.first_visible_row
|
||||
print ws.first_visible_col
|
||||
print ws.grid_colour
|
||||
print ws.preview_magn
|
||||
print ws.normal_magn
|
||||
#print ws.row_gut_width
|
||||
#print ws.col_gut_height
|
||||
print ws.show_auto_page_breaks
|
||||
print ws.dialogue_sheet
|
||||
print ws.auto_style_outline
|
||||
print ws.outline_below
|
||||
print ws.outline_right
|
||||
print ws.fit_num_pages
|
||||
print ws.show_row_outline
|
||||
print ws.show_col_outline
|
||||
print ws.alt_expr_eval
|
||||
print ws.alt_formula_entries
|
||||
print ws.row_default_height
|
||||
print ws.col_default_width
|
||||
print ws.calc_mode
|
||||
print ws.calc_count
|
||||
print ws.RC_ref_mode
|
||||
print ws.iterations_on
|
||||
print ws.delta
|
||||
print ws.save_recalc
|
||||
print ws.print_headers
|
||||
print ws.print_grid
|
||||
#print ws.grid_set
|
||||
print ws.vert_page_breaks
|
||||
print ws.horz_page_breaks
|
||||
print ws.header_str
|
||||
print ws.footer_str
|
||||
print ws.print_centered_vert
|
||||
print ws.print_centered_horz
|
||||
print ws.left_margin
|
||||
print ws.right_margin
|
||||
print ws.top_margin
|
||||
print ws.bottom_margin
|
||||
print ws.paper_size_code
|
||||
print ws.print_scaling
|
||||
print ws.start_page_number
|
||||
print ws.fit_width_to_pages
|
||||
print ws.fit_height_to_pages
|
||||
print ws.print_in_rows
|
||||
print ws.portrait
|
||||
print ws.print_colour
|
||||
print ws.print_draft
|
||||
print ws.print_notes
|
||||
print ws.print_notes_at_end
|
||||
print ws.print_omit_errors
|
||||
print ws.print_hres
|
||||
print ws.print_vres
|
||||
print ws.header_margin
|
||||
print ws.footer_margin
|
||||
print ws.copies_num
|
||||
@@ -1,46 +0,0 @@
|
||||
|
||||
# Write an XLS file with a single worksheet, containing
|
||||
# a heading row and some rows of data.
|
||||
|
||||
import xlwt
|
||||
import datetime
|
||||
ezxf = xlwt.easyxf
|
||||
|
||||
def write_xls(file_name, sheet_name, headings, data, heading_xf, data_xfs):
|
||||
book = xlwt.Workbook()
|
||||
sheet = book.add_sheet(sheet_name)
|
||||
rowx = 0
|
||||
for colx, value in enumerate(headings):
|
||||
sheet.write(rowx, colx, value, heading_xf)
|
||||
sheet.set_panes_frozen(True) # frozen headings instead of split panes
|
||||
sheet.set_horz_split_pos(rowx+1) # in general, freeze after last heading row
|
||||
sheet.set_remove_splits(True) # if user does unfreeze, don't leave a split there
|
||||
for row in data:
|
||||
rowx += 1
|
||||
for colx, value in enumerate(row):
|
||||
sheet.write(rowx, colx, value, data_xfs[colx])
|
||||
book.save(file_name)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
mkd = datetime.date
|
||||
hdngs = ['Date', 'Stock Code', 'Quantity', 'Unit Price', 'Value', 'Message']
|
||||
kinds = 'date text int price money text'.split()
|
||||
data = [
|
||||
[mkd(2007, 7, 1), 'ABC', 1000, 1.234567, 1234.57, ''],
|
||||
[mkd(2007, 12, 31), 'XYZ', -100, 4.654321, -465.43, 'Goods returned'],
|
||||
] + [
|
||||
[mkd(2008, 6, 30), 'PQRCD', 100, 2.345678, 234.57, ''],
|
||||
] * 100
|
||||
|
||||
heading_xf = ezxf('font: bold on; align: wrap on, vert centre, horiz center')
|
||||
kind_to_xf_map = {
|
||||
'date': ezxf(num_format_str='yyyy-mm-dd'),
|
||||
'int': ezxf(num_format_str='#,##0'),
|
||||
'money': ezxf('font: italic on; pattern: pattern solid, fore-colour grey25',
|
||||
num_format_str='$#,##0.00'),
|
||||
'price': ezxf(num_format_str='#0.000000'),
|
||||
'text': ezxf(),
|
||||
}
|
||||
data_xfs = [kind_to_xf_map[k] for k in kinds]
|
||||
write_xls('xlwt_easyxf_simple_demo.xls', 'Demo', hdngs, data, heading_xf, data_xfs)
|
||||
@@ -1,374 +0,0 @@
|
||||
header {
|
||||
import struct
|
||||
import Utils
|
||||
from UnicodeUtils import upack1
|
||||
from ExcelMagic import *
|
||||
|
||||
_RVAdelta = {"R": 0, "V": 0x20, "A": 0x40}
|
||||
_RVAdeltaRef = {"R": 0, "V": 0x20, "A": 0x40, "D": 0x20}
|
||||
_RVAdeltaArea = {"R": 0, "V": 0x20, "A": 0x40, "D": 0}
|
||||
|
||||
|
||||
class FormulaParseException(Exception):
|
||||
"""
|
||||
An exception indicating that a Formula could not be successfully parsed.
|
||||
"""
|
||||
}
|
||||
|
||||
header "ExcelFormulaParser.__init__" {
|
||||
self.rpn = ""
|
||||
self.sheet_references = []
|
||||
self.xcall_references = []
|
||||
}
|
||||
|
||||
options {
|
||||
language = "Python";
|
||||
}
|
||||
|
||||
class ExcelFormulaParser extends Parser;
|
||||
options {
|
||||
k = 2;
|
||||
defaultErrorHandler = false;
|
||||
buildAST = false;
|
||||
}
|
||||
|
||||
|
||||
tokens {
|
||||
TRUE_CONST;
|
||||
FALSE_CONST;
|
||||
STR_CONST;
|
||||
NUM_CONST;
|
||||
INT_CONST;
|
||||
|
||||
FUNC_IF;
|
||||
FUNC_CHOOSE;
|
||||
NAME;
|
||||
QUOTENAME;
|
||||
|
||||
EQ;
|
||||
NE;
|
||||
GT;
|
||||
LT;
|
||||
GE;
|
||||
LE;
|
||||
|
||||
ADD;
|
||||
SUB;
|
||||
MUL;
|
||||
DIV;
|
||||
|
||||
POWER;
|
||||
PERCENT;
|
||||
|
||||
LP;
|
||||
RP;
|
||||
|
||||
LB;
|
||||
RB;
|
||||
|
||||
COLON;
|
||||
COMMA;
|
||||
SEMICOLON;
|
||||
REF2D;
|
||||
REF2D_R1C1;
|
||||
BANG;
|
||||
}
|
||||
|
||||
formula
|
||||
: expr["V"]
|
||||
;
|
||||
|
||||
expr[arg_type]
|
||||
: // {print "\n**expr %s" % arg_type}
|
||||
prec0_expr[arg_type]
|
||||
(
|
||||
(
|
||||
EQ { op = struct.pack('B', ptgEQ) }
|
||||
| NE { op = struct.pack('B', ptgNE) }
|
||||
| GT { op = struct.pack('B', ptgGT) }
|
||||
| LT { op = struct.pack('B', ptgLT) }
|
||||
| GE { op = struct.pack('B', ptgGE) }
|
||||
| LE { op = struct.pack('B', ptgLE) }
|
||||
)
|
||||
prec0_expr[arg_type] { self.rpn += op }
|
||||
)*
|
||||
;
|
||||
|
||||
prec0_expr[arg_type]
|
||||
: prec1_expr[arg_type]
|
||||
(
|
||||
(
|
||||
CONCAT { op = struct.pack('B', ptgConcat) }
|
||||
)
|
||||
prec1_expr[arg_type] { self.rpn += op }
|
||||
)*
|
||||
;
|
||||
|
||||
prec1_expr[arg_type]
|
||||
: // {print "**prec1_expr1 %s" % arg_type}
|
||||
prec2_expr[arg_type]
|
||||
// {print "**prec1_expr2 %s" % arg_type}
|
||||
(
|
||||
(
|
||||
ADD { op = struct.pack('B', ptgAdd) }
|
||||
| SUB { op = struct.pack('B', ptgSub) }
|
||||
)
|
||||
// {print "**prec1_expr3 %s" % arg_type}
|
||||
prec2_expr[arg_type]
|
||||
{ self.rpn += op;
|
||||
// print "**prec1_expr4 %s" % arg_type
|
||||
}
|
||||
)*
|
||||
;
|
||||
|
||||
|
||||
prec2_expr[arg_type]
|
||||
: prec3_expr[arg_type]
|
||||
(
|
||||
(
|
||||
MUL { op = struct.pack('B', ptgMul) }
|
||||
| DIV { op = struct.pack('B', ptgDiv) }
|
||||
)
|
||||
prec3_expr[arg_type] { self.rpn += op }
|
||||
)*
|
||||
;
|
||||
|
||||
prec3_expr[arg_type]
|
||||
: prec4_expr[arg_type]
|
||||
(
|
||||
(
|
||||
POWER { op = struct.pack('B', ptgPower) }
|
||||
)
|
||||
prec4_expr[arg_type] { self.rpn += op }
|
||||
)*
|
||||
;
|
||||
|
||||
prec4_expr[arg_type]
|
||||
: prec5_expr[arg_type]
|
||||
(
|
||||
PERCENT { self.rpn += struct.pack('B', ptgPercent) }
|
||||
)?
|
||||
;
|
||||
|
||||
prec5_expr[arg_type]
|
||||
: primary[arg_type]
|
||||
| SUB primary[arg_type] { self.rpn += struct.pack('B', ptgUminus) }
|
||||
;
|
||||
|
||||
primary[arg_type]
|
||||
: TRUE_CONST
|
||||
{
|
||||
self.rpn += struct.pack("2B", ptgBool, 1)
|
||||
}
|
||||
| FALSE_CONST
|
||||
{
|
||||
self.rpn += struct.pack("2B", ptgBool, 0)
|
||||
}
|
||||
| str_tok:STR_CONST
|
||||
{
|
||||
self.rpn += struct.pack("B", ptgStr) + upack1(str_tok.text[1:-1].replace("\"\"", "\""))
|
||||
}
|
||||
| int_tok:INT_CONST
|
||||
{
|
||||
// print "**int_const", int_tok.text
|
||||
int_value = int(int_tok.text)
|
||||
if int_value <= 65535:
|
||||
self.rpn += struct.pack("<BH", ptgInt, int_value)
|
||||
else:
|
||||
self.rpn += struct.pack("<Bd", ptgNum, float(int_value))
|
||||
}
|
||||
| num_tok:NUM_CONST
|
||||
{
|
||||
self.rpn += struct.pack("<Bd", ptgNum, float(num_tok.text))
|
||||
}
|
||||
| ref2d_tok:REF2D
|
||||
{
|
||||
// print "**ref2d %s %s" % (ref2d_tok.text, arg_type)
|
||||
r, c = Utils.cell_to_packed_rowcol(ref2d_tok.text)
|
||||
ptg = ptgRefR + _RVAdeltaRef[arg_type]
|
||||
self.rpn += struct.pack("<B2H", ptg, r, c)
|
||||
}
|
||||
| ref2d1_tok:REF2D COLON ref2d2_tok:REF2D
|
||||
{
|
||||
r1, c1 = Utils.cell_to_packed_rowcol(ref2d1_tok.text)
|
||||
r2, c2 = Utils.cell_to_packed_rowcol(ref2d2_tok.text)
|
||||
ptg = ptgAreaR + _RVAdeltaArea[arg_type]
|
||||
self.rpn += struct.pack("<B4H", ptg, r1, r2, c1, c2)
|
||||
}
|
||||
| sheet1 = sheet
|
||||
{
|
||||
sheet2 = sheet1
|
||||
}
|
||||
( COLON sheet2 = sheet )? BANG ref3d_ref2d: REF2D
|
||||
{
|
||||
ptg = ptgRef3dR + _RVAdeltaRef[arg_type]
|
||||
rpn_ref2d = ""
|
||||
r1, c1 = Utils.cell_to_packed_rowcol(ref3d_ref2d.text)
|
||||
rpn_ref2d = struct.pack("<3H", 0x0000, r1, c1)
|
||||
}
|
||||
( COLON ref3d_ref2d2: REF2D
|
||||
{
|
||||
ptg = ptgArea3dR + _RVAdeltaArea[arg_type]
|
||||
r2, c2 = Utils.cell_to_packed_rowcol(ref3d_ref2d2.text)
|
||||
rpn_ref2d = struct.pack("<5H", 0x0000, r1, r2, c1, c2)
|
||||
}
|
||||
)?
|
||||
{
|
||||
self.rpn += struct.pack("<B", ptg)
|
||||
self.sheet_references.append((sheet1, sheet2, len(self.rpn)))
|
||||
self.rpn += rpn_ref2d
|
||||
}
|
||||
| FUNC_IF
|
||||
LP expr["V"] (SEMICOLON | COMMA)
|
||||
{
|
||||
self.rpn += struct.pack("<BBH", ptgAttr, 0x02, 0) // tAttrIf
|
||||
pos0 = len(self.rpn) - 2
|
||||
}
|
||||
expr[arg_type] (SEMICOLON | COMMA)
|
||||
{
|
||||
self.rpn += struct.pack("<BBH", ptgAttr, 0x08, 0) // tAttrSkip
|
||||
pos1 = len(self.rpn) - 2
|
||||
self.rpn = self.rpn[:pos0] + struct.pack("<H", pos1-pos0) + self.rpn[pos0+2:]
|
||||
}
|
||||
expr[arg_type] RP
|
||||
{
|
||||
self.rpn += struct.pack("<BBH", ptgAttr, 0x08, 3) // tAttrSkip
|
||||
self.rpn += struct.pack("<BBH", ptgFuncVarR, 3, 1) // 3 = nargs, 1 = IF func
|
||||
pos2 = len(self.rpn)
|
||||
self.rpn = self.rpn[:pos1] + struct.pack("<H", pos2-(pos1+2)-1) + self.rpn[pos1+2:]
|
||||
}
|
||||
| FUNC_CHOOSE
|
||||
{
|
||||
arg_type = "R"
|
||||
rpn_chunks = []
|
||||
}
|
||||
LP expr["V"] // first argument (the selector)
|
||||
{
|
||||
rpn_start = len(self.rpn)
|
||||
ref_markers = [len(self.sheet_references)]
|
||||
}
|
||||
(
|
||||
(SEMICOLON | COMMA)
|
||||
{ mark = len(self.rpn) }
|
||||
(
|
||||
expr[arg_type]
|
||||
| { self.rpn += struct.pack("B", ptgMissArg) }
|
||||
)
|
||||
{
|
||||
rpn_chunks.append(self.rpn[mark:])
|
||||
ref_markers.append(len(self.sheet_references))
|
||||
}
|
||||
)*
|
||||
RP
|
||||
{
|
||||
self.rpn = self.rpn[:rpn_start]
|
||||
nc = len(rpn_chunks)
|
||||
chunklens = [len(chunk) for chunk in rpn_chunks]
|
||||
skiplens = [0] * nc
|
||||
skiplens[-1] = 3
|
||||
for ic in xrange(nc-1, 0, -1):
|
||||
skiplens[ic-1] = skiplens[ic] + chunklens[ic] + 4
|
||||
jump_pos = [2 * nc + 2]
|
||||
for ic in xrange(nc):
|
||||
jump_pos.append(jump_pos[-1] + chunklens[ic] + 4)
|
||||
chunk_shift = 2 * nc + 6 // size of tAttrChoose
|
||||
for ic in xrange(nc):
|
||||
for refx in xrange(ref_markers[ic], ref_markers[ic+1]):
|
||||
ref = self.sheet_references[refx]
|
||||
self.sheet_references[refx] = (ref[0], ref[1], ref[2] + chunk_shift)
|
||||
chunk_shift += 4 // size of tAttrSkip
|
||||
choose_rpn = []
|
||||
choose_rpn.append(struct.pack("<BBH", ptgAttr, 0x04, nc)) // 0x04 is tAttrChoose
|
||||
choose_rpn.append(struct.pack("<%dH" % (nc+1), *jump_pos))
|
||||
for ic in xrange(nc):
|
||||
choose_rpn.append(rpn_chunks[ic])
|
||||
choose_rpn.append(struct.pack("<BBH", ptgAttr, 0x08, skiplens[ic])) // 0x08 is tAttrSkip
|
||||
choose_rpn.append(struct.pack("<BBH", ptgFuncVarV, nc+1, 100)) // 100 is CHOOSE fn
|
||||
self.rpn += "".join(choose_rpn)
|
||||
}
|
||||
| name_tok:NAME
|
||||
{
|
||||
raise Exception("[formula] found unexpected NAME token (%r)" % name_tok.txt)
|
||||
// #### TODO: handle references to defined names here
|
||||
}
|
||||
| func_tok:NAME
|
||||
{
|
||||
func_toku = func_tok.text.upper()
|
||||
if func_toku in all_funcs_by_name:
|
||||
(opcode,
|
||||
min_argc,
|
||||
max_argc,
|
||||
func_type,
|
||||
arg_type_str) = all_funcs_by_name[func_toku]
|
||||
arg_type_list = list(arg_type_str)
|
||||
else:
|
||||
raise Exception("[formula] unknown function (%s)" % func_tok.text)
|
||||
// print "**func_tok1 %s %s" % (func_toku, func_type)
|
||||
xcall = opcode < 0
|
||||
if xcall:
|
||||
// The name of the add-in function is passed as the 1st arg
|
||||
// of the hidden XCALL function
|
||||
self.xcall_references.append((func_toku, len(self.rpn) + 1))
|
||||
self.rpn += struct.pack("<BHHH",
|
||||
ptgNameXR,
|
||||
0xadde, // ##PATCHME## index to REF entry in EXTERNSHEET record
|
||||
0xefbe, // ##PATCHME## one-based index to EXTERNNAME record
|
||||
0x0000) // unused
|
||||
}
|
||||
LP arg_count = expr_list[arg_type_list, min_argc, max_argc] RP
|
||||
{
|
||||
if arg_count > max_argc or arg_count < min_argc:
|
||||
raise Exception, "%d parameters for function: %s" % (arg_count, func_tok.text)
|
||||
if xcall:
|
||||
func_ptg = ptgFuncVarR + _RVAdelta[func_type]
|
||||
self.rpn += struct.pack("<2BH", func_ptg, arg_count + 1, 255) // 255 is magic XCALL function
|
||||
elif min_argc == max_argc:
|
||||
func_ptg = ptgFuncR + _RVAdelta[func_type]
|
||||
self.rpn += struct.pack("<BH", func_ptg, opcode)
|
||||
elif arg_count == 1 and func_tok.text.upper() == "SUM":
|
||||
self.rpn += struct.pack("<BBH", ptgAttr, 0x10, 0) // tAttrSum
|
||||
else:
|
||||
func_ptg = ptgFuncVarR + _RVAdelta[func_type]
|
||||
self.rpn += struct.pack("<2BH", func_ptg, arg_count, opcode)
|
||||
}
|
||||
| LP expr[arg_type] RP
|
||||
{
|
||||
self.rpn += struct.pack("B", ptgParen)
|
||||
}
|
||||
;
|
||||
|
||||
expr_list[arg_type_list, min_argc, max_argc] returns [arg_cnt]
|
||||
{
|
||||
arg_cnt = 0
|
||||
arg_type = arg_type_list[arg_cnt]
|
||||
// print "**expr_list1[%d] req=%s" % (arg_cnt, arg_type)
|
||||
}
|
||||
: expr[arg_type] { arg_cnt += 1 }
|
||||
(
|
||||
{
|
||||
if arg_cnt < len(arg_type_list):
|
||||
arg_type = arg_type_list[arg_cnt]
|
||||
else:
|
||||
arg_type = arg_type_list[-1]
|
||||
if arg_type == "+":
|
||||
arg_type = arg_type_list[-2]
|
||||
// print "**expr_list2[%d] req=%s" % (arg_cnt, arg_type)
|
||||
}
|
||||
(SEMICOLON | COMMA)
|
||||
(
|
||||
expr[arg_type]
|
||||
| { self.rpn += struct.pack("B", ptgMissArg) }
|
||||
)
|
||||
{ arg_cnt += 1 }
|
||||
)*
|
||||
|
|
||||
;
|
||||
|
||||
sheet returns[ref]
|
||||
: sheet_ref_name: NAME
|
||||
{ ref = sheet_ref_name.text }
|
||||
| sheet_ref_int: INT_CONST
|
||||
{ ref = sheet_ref_int.text }
|
||||
| sheet_ref_quote: QUOTENAME
|
||||
{ ref = sheet_ref_quote.text[1:-1].replace("''", "'") }
|
||||
;
|
||||
Reference in New Issue
Block a user