OK, will have a look at the workbooks a little later.

I do have one further question; do you have any idea of roughly how many of
these cells you will have to alter? The reason I ask is that Excel places a
limit on the number of different format/style objects you can create - at
least the .xls binary format does, I am not so certain about the OpenXML
based one. As a result, we may need to look into 'style pooling' if you are
going to be altering the format on a reasonably large number of cells. This
should be quite straightforward to implement - use some form of Collections
object to manage the styles and check to see if one already exists with the
attributes we require before creating a new one - but it is an extra wrinkle
to take into consideration.

If I have the time over the weekend, I will try to put something together.

Yours

Mark B

PS Did the WorkbookFactory solve your other problem?


yehogold wrote:
> 
> It sounds like you've got it.  I will be removing the highlighting applied
> to the cells using the POI.  Here is the function I currently have written
> to do that:
> 
>       public void clearMark(Cell cell)
>       {
>               if (cell.getCellStyle().getFillPattern() ==
> CellStyle.THIN_BACKWARD_DIAG)
>               {
>                       Workbook wb = cell.getSheet().getWorkbook();
>                       CellStyle clearStyle = wb.createCellStyle();
>               
>                       clearStyle.cloneStyleFrom(cell.getCellStyle());
>                       
>                       clearStyle.setFillForegroundColor(Font.COLOR_NORMAL);
>                       clearStyle.setFillPattern(CellStyle.NO_FILL);
>                       
>                       cell.setCellStyle(clearStyle);
>               }
>       }
> 
> I've tried testing it on its own, using cells that I marked manually with
> the red-strips using Excel.  It mostly works, however it does cause two
> bugs.  
> 
> First, although it retains the font and text color of the cell, it does
> not retain the background color of the cell.
> 
> Second, when run on a .xlsx file, Excel complains that it found unreadable
> content in the workbook.  It can repair the problem and open the workbook,
> but gives you a warning message when you open it.
> 
> I am attaching 4 versions of a test work book.  The two book1's are
> identical workbooks before the above function was run on them in two
> different formats, book1_after's are the resultant files after the
> function was run.
> 
> Thank you,
> 
> yehogold
> 
>  http://www.nabble.com/file/p24972448/Book1.xls Book1.xls 
> http://www.nabble.com/file/p24972448/Book1.xlsx Book1.xlsx 
> http://www.nabble.com/file/p24972448/Book1_after.xls Book1_after.xls 
> http://www.nabble.com/file/p24972448/Book1_after.xlsx Book1_after.xlsx 
> 
> 
> 
> MSB wrote:
>> 
>> At the risk of repeating myself, I want to be completely clear about
>> this;
>> 
>> You are reading in an existing workbook.
>> You want to clone the style from one of the cells of that workbook and
>> then modify it such that the forground consists of a pattern of diagonal
>> red bars. This format will be used to mark or highlight cells that
>> conform to a specific criteria and you will be highlighting - applying
>> the style to - them using POI.
>> Later, you may want to re-set or remove the highlighting applied to the
>> cells. How will this be done, through POI or manually. If done through
>> POI, how will you accomplish this? I only ask because if you modify a
>> style that has been applied to one or more cells, every cell that style
>> has been applied to will be affected - so it would be better to change
>> the style applied to another one.
>> 
>> Will proceed on this premise but cannot promise anything soon.
>> 
>> Yours
>> 
>> Mark B
>> 
>> 
>> yehogold wrote:
>>> 
>>> I am, indeed, cloning a cellStyle from the same workbook.
>>> 
>>> The point of this portion of the program is to mark the cell of an
>>> existing workbook that was created using EXCEL, not the POI.  Therefore,
>>> I am opening and reading in the workbook.
>>> 
>>> What I would like to do is to mark the cell with red diagonal lines in
>>> the foreground.  I would like the rest of the format to remain the same
>>> as it was before, allowing me to "unmark" it at a later point, returning
>>> it to its original format.  Therefore, if the background is white, I
>>> would like it to stay white, if it is blue, I would like it to stay
>>> blue, if the font is bold, I would like it to stay bold, etc.
>>> 
>>> Thank you again for spending so much time on this,
>>> 
>>> yehogold
>>> 
>>> 
>>> MSB wrote:
>>>> 
>>>> Sorry about BiffViewer. I was assuming that you were cloning a style
>>>> from one workbook for use in a different workbook. BiffViwere would
>>>> have allowed you to see what the differences were between the original
>>>> style and the clone had this been the case.
>>>> 
>>>> Now, from what you have said, it seems as though you are cloning a
>>>> style within a workbook, can I ask, is this the case? If so, are you
>>>> building the workbook entirely using POI or are you opening and then
>>>> modifying an existing workbook? If the former, then the easy way to get
>>>> around the problem is to not clone and then modify a style but to build
>>>> it completely from scratch, even though this does mean a few lines of
>>>> repeated code.
>>>> 
>>>> If I have the time tomorrow, I will experiment with the workbook you
>>>> attached to see if I can replicate the problem. Can I check to make
>>>> sure that the style you are looking for has a white background to the
>>>> cell and red diagonal bars in the foreground?
>>>> 
>>>> Yours
>>>> 
>>>> Mark B
>>>> 
>>>> 
>>>> yehogold wrote:
>>>>> 
>>>>> I used the BiffViewer to look at the file, but I'm not sure how to
>>>>> read what I am looking at.  I can see many different kinds of style
>>>>> objects and a couple of cell objects, but am not sure how you know
>>>>> what cell has what style.
>>>>> Is there anywhere where there are instructions on how to read the
>>>>> output of the BiffViewer?
>>>>> 
>>>>> As shown in the code, the new cellStyle was created by cloning the
>>>>> cellStyle of the cell, modifying it, and setting the cellStyle of the
>>>>> cell to the newly modified clone.
>>>>> 
>>>>> I don't remember what the original style of the cells were in the
>>>>> workbook attached to my first method.  I am attaching a second
>>>>> workbook were I know that the original cellStyle of all the cells was
>>>>> the default, i.e. I did not modify the style before running the
>>>>> workbook through the program.
>>>>> 
>>>>> Please let me know if anyone has any ideas.
>>>>> 
>>>>> Thank again in advance for your time.
>>>>> 
>>>>> Regaurds,
>>>>> yehogold
>>>>> 
>>>>>  http://www.nabble.com/file/p24955769/workbook.xls workbook.xls 
>>>>> 
>>>>> 
>>>>> MSB wrote:
>>>>>> 
>>>>>> As a first step, I would reccomend that you investigate alittle using
>>>>>> the BiffViewer utility. That may tell you which attributes of the
>>>>>> cell style are either not being set correctly or corrunpted by the
>>>>>> clone process.
>>>>>> 
>>>>>> Does the example workbook you have posted contain both the corrupted
>>>>>> cell style and the style that you are cloning to create it in the
>>>>>> first instance?
>>>>>> 
>>>>>> Yours
>>>>>> 
>>>>>> Mark B
>>>>>> 
>>>>>> 
>>>>>> yehogold wrote:
>>>>>>> 
>>>>>>> Hi.
>>>>>>> 
>>>>>>> I have the following code used to modify the pattern of a cell:
>>>>>>> 
>>>>>>>                 Workbook wb = cell.getSheet().getWorkbook();
>>>>>>>                 CellStyle errorStyle = wb.createCellStyle();
>>>>>>>         
>>>>>>>                 errorStyle.cloneStyleFrom(cell.getCellStyle());
>>>>>>>                 
>>>>>>>                 errorStyle.setFillForegroundColor(Font.COLOR_RED);
>>>>>>>                 errorStyle.setFillPattern(CellStyle.THIN_BACKWARD_DIAG);
>>>>>>>                 
>>>>>>>                 cell.setCellStyle(errorStyle);  
>>>>>>> 
>>>>>>> When I run it, I end up getting these weird looking black cells. 
>>>>>>> Excel 2003 will also not let me directly change the format of the
>>>>>>> black cells.  How would I format the cells withouth getting this
>>>>>>> problem?
>>>>>>> 
>>>>>>> I am inclosing one of the workbooks.  The messed up black cells are
>>>>>>> on sheet2.
>>>>>>> 
>>>>>>> Thank you in advance for your help.
>>>>>>>  http://www.nabble.com/file/p24923092/workbook2.xls workbook2.xls 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 

-- 
View this message in context: 
http://www.nabble.com/Weird-cells-appearing-after-modifying-the-format-of-a-cell-tp24923092p24973403.html
Sent from the POI - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to