4623
Comment:
|
4539
converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 7: | Line 7: |
[[TableOfContents]] | <<TableOfContents>> |
Line 24: | Line 24: |
from java.io import FileOutputStream; from java.util import Date; from java.lang import System from java.lang import Math |
from java.io import FileOutputStream from java.util import Date from java.lang import System, Math |
Line 30: | Line 29: |
from org.apache.poi.hssf.util import HSSFColor; | from org.apache.poi.hssf.util import HSSFColor |
Line 32: | Line 31: |
startTime = System.currentTimeMillis(); | startTime = System.currentTimeMillis() |
Line 34: | Line 33: |
wb = HSSFWorkbook(); fileOut = FileOutputStream("POIOut2.xls"); |
wb = HSSFWorkbook() fileOut = FileOutputStream("POIOut2.xls") |
Line 40: | Line 38: |
sheet1 = wb.createSheet("Sheet1"); sheet2 = wb.createSheet("Sheet2"); sheet3 = wb.createSheet("Sheet3"); sheet3 = wb.createSheet("Sheet4"); |
sheet1 = wb.createSheet("Sheet1") sheet2 = wb.createSheet("Sheet2") sheet3 = wb.createSheet("Sheet3") sheet3 = wb.createSheet("Sheet4") |
Line 46: | Line 44: |
styleHeader = wb.createCellStyle(); fontHeader = wb.createFont(); fontHeader.setBoldweight(2); fontHeader.setFontHeightInPoints(14); fontHeader.setFontName("Arial"); styleHeader.setFont(fontHeader); |
styleHeader = wb.createCellStyle() fontHeader = wb.createFont() fontHeader.setBoldweight(2) fontHeader.setFontHeightInPoints(14) fontHeader.setFontName("Arial") styleHeader.setFont(fontHeader) |
Line 54: | Line 52: |
style0 = wb.createCellStyle(); font0 = wb.createFont(); font0.setColor(HSSFColor.RED.index); style0.setFont(font0); |
style0 = wb.createCellStyle() font0 = wb.createFont() font0.setColor(HSSFColor.RED.index) style0.setFont(font0) |
Line 61: | Line 59: |
styleDates = wb.createCellStyle(); styleDates.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); |
styleDates = wb.createCellStyle() styleDates.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")) |
Line 66: | Line 64: |
rowHeader = sheet1.createRow(1); | rowHeader = sheet1.createRow(1) |
Line 68: | Line 66: |
cell0 = rowHeader.createCell(0); cell0.setCellStyle(styleHeader); cell0.setCellValue("Name"); |
cell0 = rowHeader.createCell(0) cell0.setCellStyle(styleHeader) cell0.setCellValue("Name") |
Line 75: | Line 73: |
cell = rowHeader.createCell((i + 1)); cell.setCellStyle(styleHeader); cell.setCellValue("Data " + str( (i + 1)) ); |
cell = rowHeader.createCell((i + 1)) cell.setCellStyle(styleHeader) cell.setCellValue("Data " + str( (i + 1)) ) |
Line 81: | Line 79: |
cell10 = rowHeader.createCell(9); cell10.setCellValue("Date"); cell10.setCellStyle(styleHeader); |
cell10 = rowHeader.createCell(9) cell10.setCellValue("Date") cell10.setCellStyle(styleHeader) |
Line 87: | Line 85: |
row = sheet1.createRow(i + 2); | row = sheet1.createRow(i + 2) |
Line 90: | Line 88: |
cell = row.createCell(j); | cell = row.createCell(j) |
Line 92: | Line 90: |
if (j == 0): cell.setCellValue("Product " + str(i)); cell.setCellStyle(style0); |
if j == 0: cell.setCellValue("Product " + str(i)) cell.setCellStyle(style0) |
Line 97: | Line 95: |
elif (j < 9): cell.setCellValue( (Math.random() * 100)); |
elif j < 9: cell.setCellValue( (Math.random() * 100)) |
Line 102: | Line 100: |
cell.setCellValue(Date()); cell.setCellStyle(styleDates); |
cell.setCellValue(Date()) cell.setCellStyle(styleDates) |
Line 106: | Line 104: |
rowSummary = sheet1.createRow(102); sumStyle = wb.createCellStyle(); sumFont = wb.createFont(); sumFont.setBoldweight( 5); sumFont.setFontHeightInPoints(12); sumStyle.setFont(sumFont); sumStyle.setFillPattern(HSSFCellStyle.FINE_DOTS); sumStyle.setFillForegroundColor(HSSFColor.GREEN.index); |
rowSummary = sheet1.createRow(102) sumStyle = wb.createCellStyle() sumFont = wb.createFont() sumFont.setBoldweight( 5) sumFont.setFontHeightInPoints(12) sumStyle.setFont(sumFont) sumStyle.setFillPattern(HSSFCellStyle.FINE_DOTS) sumStyle.setFillForegroundColor(HSSFColor.GREEN.index) |
Line 116: | Line 114: |
cellSum0 = rowSummary.createCell( 0); cellSum0.setCellValue("TOTALS:"); cellSum0.setCellStyle(sumStyle); |
cellSum0 = rowSummary.createCell( 0) cellSum0.setCellValue("TOTALS:") cellSum0.setCellStyle(sumStyle) |
Line 123: | Line 121: |
cellB = rowSummary.createCell( 1); cellB.setCellStyle(sumStyle); cellB.setCellFormula("SUM(B3:B102)"); |
cellB = rowSummary.createCell( 1) cellB.setCellStyle(sumStyle) cellB.setCellFormula("SUM(B3:B102)") |
Line 142: | Line 140: |
Line 145: | Line 142: |
from java.io import FileInputStream; | from java.io import FileInputStream |
Line 150: | Line 147: |
wb = HSSFWorkbook(fis); sheet = wb.getSheetAt(0); |
wb = HSSFWorkbook(fis) sheet = wb.getSheetAt(0) |
Line 154: | Line 151: |
rows = sheet.getPhysicalNumberOfRows(); | rows = sheet.getPhysicalNumberOfRows() |
Line 157: | Line 154: |
cols = 0; # No. of columns tmp = 0; |
cols = 0 # No. of columns tmp = 0 |
Line 163: | Line 160: |
row = sheet.getRow(i); | row = sheet.getRow(i) |
Line 165: | Line 162: |
tmp = sheet.getRow(i).getPhysicalNumberOfCells(); if(tmp > cols): cols = tmp; |
tmp = sheet.getRow(i).getPhysicalNumberOfCells() if tmp > cols: cols = tmp |
Line 170: | Line 168: |
row = sheet.getRow(r); | row = sheet.getRow(r) |
Line 174: | Line 172: |
cell = row.getCell(c); if(cell != None): |
cell = row.getCell(c) if cell != None: |
Line 179: | Line 177: |
fis.close(); | fis.close() |
Apache Poi Examples
back to OtherExamples
Below are a few Poi examples. These examples requires Apache Poi installed and on the classpath.
Create Spreadsheet
This is from the Jython mailing list and was posted September 2007
This is based on Java code at http://officewriter.softartisans.com/OfficeWriter-306.aspx and converted to Jython by Alfonso Reyes
1 #jython poi example. from Jython mailing list
2
3 from java.io import FileOutputStream
4 from java.util import Date
5 from java.lang import System, Math
6
7 from org.apache.poi.hssf.usermodel import *
8 from org.apache.poi.hssf.util import HSSFColor
9
10 startTime = System.currentTimeMillis()
11
12 wb = HSSFWorkbook()
13 fileOut = FileOutputStream("POIOut2.xls")
14
15
16 # Create 3 sheets
17 sheet1 = wb.createSheet("Sheet1")
18 sheet2 = wb.createSheet("Sheet2")
19 sheet3 = wb.createSheet("Sheet3")
20 sheet3 = wb.createSheet("Sheet4")
21
22 # Create a header style
23 styleHeader = wb.createCellStyle()
24 fontHeader = wb.createFont()
25 fontHeader.setBoldweight(2)
26 fontHeader.setFontHeightInPoints(14)
27 fontHeader.setFontName("Arial")
28 styleHeader.setFont(fontHeader)
29
30 # Create a style used for the first column
31 style0 = wb.createCellStyle()
32 font0 = wb.createFont()
33 font0.setColor(HSSFColor.RED.index)
34 style0.setFont(font0)
35
36
37 # Create the style used for dates.
38 styleDates = wb.createCellStyle()
39 styleDates.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"))
40
41
42 # create the headers
43 rowHeader = sheet1.createRow(1)
44 # String value
45 cell0 = rowHeader.createCell(0)
46 cell0.setCellStyle(styleHeader)
47 cell0.setCellValue("Name")
48
49
50 # numbers
51 for i in range(0, 8, 1):
52 cell = rowHeader.createCell((i + 1))
53 cell.setCellStyle(styleHeader)
54 cell.setCellValue("Data " + str( (i + 1)) )
55
56
57 # Date
58 cell10 = rowHeader.createCell(9)
59 cell10.setCellValue("Date")
60 cell10.setCellStyle(styleHeader)
61
62 for i in range(0, 100, 1):
63 # create a new row
64 row = sheet1.createRow(i + 2)
65 for j in range(0, 10, 1):
66 # create each cell
67 cell = row.createCell(j)
68 # Fill the first column with strings
69 if j == 0:
70 cell.setCellValue("Product " + str(i))
71 cell.setCellStyle(style0)
72
73 # Fill the next 8 columns with numbers.
74 elif j < 9:
75 cell.setCellValue( (Math.random() * 100))
76
77 # Fill the last column with dates.
78 else:
79 cell.setCellValue(Date())
80 cell.setCellStyle(styleDates)
81
82 # Summary row
83 rowSummary = sheet1.createRow(102)
84 sumStyle = wb.createCellStyle()
85 sumFont = wb.createFont()
86 sumFont.setBoldweight( 5)
87 sumFont.setFontHeightInPoints(12)
88 sumStyle.setFont(sumFont)
89 sumStyle.setFillPattern(HSSFCellStyle.FINE_DOTS)
90 sumStyle.setFillForegroundColor(HSSFColor.GREEN.index)
91
92
93 cellSum0 = rowSummary.createCell( 0)
94 cellSum0.setCellValue("TOTALS:")
95 cellSum0.setCellStyle(sumStyle)
96
97
98 # numbers
99 # B
100 cellB = rowSummary.createCell( 1)
101 cellB.setCellStyle(sumStyle)
102 cellB.setCellFormula("SUM(B3:B102)")
Read an Excel file
Posted to the Jython-users mailing list by Alfonso Reyes on October 14, 2007 This Jython code will open and read an existant Excel file you can download the file at http://www.nabble.com/file/p13199712/Book1.xls
To do: - create the excel file if it doesn't exist - a nicer printing method - a method to print values or formulas in the cells
1 """ read.py
2 Read an existant Excel file (Book1.xls) and show it on the screen
3 """
4 from org.apache.poi.hssf.usermodel import *
5 from java.io import FileInputStream
6
7 file = "H:Book1.xls"
8 print file
9 fis = FileInputStream(file)
10 wb = HSSFWorkbook(fis)
11 sheet = wb.getSheetAt(0)
12
13 # get No. of rows
14 rows = sheet.getPhysicalNumberOfRows()
15 print wb, sheet, rows
16
17 cols = 0 # No. of columns
18 tmp = 0
19
20 # This trick ensures that we get the data properly even if it
21 # doesn’t start from first few rows
22 for i in range(0, 10,1):
23 row = sheet.getRow(i)
24 if(row != None):
25 tmp = sheet.getRow(i).getPhysicalNumberOfCells()
26 if tmp > cols:
27 cols = tmp
28 print cols
29
30 for r in range(0, rows, 1):
31 row = sheet.getRow(r)
32 print r
33 if(row != None):
34 for c in range(0, cols, 1):
35 cell = row.getCell(c)
36 if cell != None:
37 print cell
38
39 #wb.close()
40 fis.close()
back to OtherExamples