ASF Bugzilla – Attachment 22787 Details for
Bug 46119
fix shift rows
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch shift rows
ooxml081029shiftRows.diff (text/plain), 5.52 KB, created by
Gisella Bronzetti
on 2008-10-29 08:02:38 UTC
(
hide
)
Description:
patch shift rows
Filename:
MIME Type:
Creator:
Gisella Bronzetti
Created:
2008-10-29 08:02:38 UTC
Size:
5.52 KB
patch
obsolete
>Index: src/examples/src/org/apache/poi/xssf/usermodel/examples/ShiftRows.java >=================================================================== >--- src/examples/src/org/apache/poi/xssf/usermodel/examples/ShiftRows.java (revision 0) >+++ src/examples/src/org/apache/poi/xssf/usermodel/examples/ShiftRows.java (revision 0) >@@ -0,0 +1,58 @@ >+/* ==================================================================== >+ Licensed to the Apache Software Foundation (ASF) under one or more >+ contributor license agreements. See the NOTICE file distributed with >+ this work for additional information regarding copyright ownership. >+ The ASF licenses this file to You under the Apache License, Version 2.0 >+ (the "License"); you may not use this file except in compliance with >+ the License. You may obtain a copy of the License at >+ >+ http://www.apache.org/licenses/LICENSE-2.0 >+ >+ Unless required by applicable law or agreed to in writing, software >+ distributed under the License is distributed on an "AS IS" BASIS, >+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. >+ See the License for the specific language governing permissions and >+ limitations under the License. >+==================================================================== */ >+ >+package org.apache.poi.xssf.usermodel.examples; >+ >+import java.io.FileOutputStream; >+ >+import org.apache.poi.ss.usermodel.Row; >+import org.apache.poi.ss.usermodel.Sheet; >+import org.apache.poi.ss.usermodel.Workbook; >+import org.apache.poi.xssf.usermodel.XSSFWorkbook; >+ >+public class ShiftRows { >+ >+ public static void main(String[]args) throws Exception{ >+ Workbook wb = new XSSFWorkbook(); >+ Sheet sheet = wb.createSheet("Sheet1"); >+ >+ Row row1=sheet.createRow(1); >+ row1.createCell(0).setCellValue(1); >+ >+ Row row2=sheet.createRow(4); >+ row2.createCell(1).setCellValue(2); >+ >+ Row row3=sheet.createRow(5); >+ row3.createCell(2).setCellValue(3); >+ >+ Row row4=sheet.createRow(6); >+ row4.createCell(3).setCellValue(4); >+ >+ Row row5=sheet.createRow(9); >+ row5.createCell(4).setCellValue(5); >+ >+ // Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5) >+ sheet.shiftRows(5, 10, -4); >+ >+ FileOutputStream fileOut = new FileOutputStream("shiftRows.xlsx"); >+ wb.write(fileOut); >+ fileOut.close(); >+ >+ } >+ >+ >+} >Index: src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java >=================================================================== >--- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java (revision 708894) >+++ src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java (working copy) >@@ -267,14 +267,14 @@ > * @param height the height in "twips" or 1/20th of a point. <code>-1</code> resets to the default height > */ > public void setHeight(short height) { >- if(height == -1){ >- this.row.unsetHt(); >- this.row.unsetCustomHeight(); >- } else { >- this.row.setHt((double)height/20); >- this.row.setCustomHeight(true); >+ if(height == -1){ >+ if(row.isSetHt())this.row.unsetHt(); >+ if(row.isSetCustomHeight())this.row.unsetCustomHeight(); >+ } else { >+ this.row.setHt((double)height/20); >+ this.row.setCustomHeight(true); > >- } >+ } > } > /** > * Set the row's height in points. >Index: src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java >=================================================================== >--- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java (revision 708894) >+++ src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java (working copy) >@@ -806,4 +806,17 @@ > public CTCell getCTCell(){ > return cell; > } >+ >+/** >+ * update cell reference in case of shift row >+ * @param row >+ */ >+ public void modifyCellReference(XSSFRow row){ >+ this.cell.setR(new CellReference(row.getRowNum(), cellNum).formatAsString()); >+ >+ CTCell[] ctCells=row.getCTRow().getCArray(); >+ for(CTCell ctCell: ctCells){ >+ ctCell.setR(new CellReference(row.getRowNum(), cellNum).formatAsString()); >+ } >+ } > } >Index: src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java >=================================================================== >--- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (revision 708894) >+++ src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (working copy) >@@ -1424,9 +1424,11 @@ > public void shiftRows(int startRow, int endRow, int n, boolean copyRowHeight, boolean resetOriginalRowHeight) { > for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) { > Row row = it.next(); >+ > if (!copyRowHeight) { > row.setHeight((short)-1); > } >+ > if (resetOriginalRowHeight && getDefaultRowHeight() >= 0) { > row.setHeight(getDefaultRowHeight()); > } >@@ -1435,6 +1437,9 @@ > } > else if (row.getRowNum() >= startRow && row.getRowNum() <= endRow) { > row.setRowNum(row.getRowNum() + n); >+ if(row.getFirstCellNum()>-1){ >+ modifyCellReference((XSSFRow)row); >+ } > } > } > //rebuild the rows map >@@ -1443,6 +1448,16 @@ > rows = map; > } > >+ >+ private void modifyCellReference(XSSFRow row){ >+ for(int i=row.getFirstCellNum();i<=row.getLastCellNum();i++){ >+ XSSFCell c=(XSSFCell)row.getCell(i); >+ if(c!=null){ >+ c.modifyCellReference(row); >+ } >+ } >+ } >+ > /** > * Location of the top left visible cell Location of the top left visible cell in the bottom right > * pane (when in Left-to-Right mode).
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 46119
: 22787