private final static char bulletChar = 8226;

deep4u wrote:
> Hi Mark,
>             what is the character value for arrow type of bullet. can u send
> out what are available characters.
>
> Thanks,
>
>
> MSB wrote:
>   
>> I am just weak and could not resist having a play. Anyway, here you go,
>> how to insert a bulleted list into a cell;
>>
>>         File file = null;
>>         FileOutputStream fos = null;
>>         HSSFWorkbook workbook = null;
>>         HSSFSheet sheet = null;
>>         HSSFRow row = null;
>>         HSSFCell cell = null;
>>         HSSFCellStyle wrapStyle = null;
>>         String contents = null;
>>         // This is the code for the bullet character
>>         char bulletChar = 8226;
>>         // and this the code for the new line character. You may
>>         // equally be able to use '\n' or '\r' but I did not try these out
>>         char newLineChar = 10;
>>         try {
>>             file = new File("........... Your file name
>> .................");
>>             fos = new FileOutputStream(file);
>>             workbook = new HSSFWorkbook();
>>             sheet = workbook.createSheet();
>>             // You need to set wrapping on for the cell, so create a style
>> with
>>             // that attribute set.
>>             wrapStyle = workbook.createCellStyle();
>>             wrapStyle.setWrapText(true);
>>             row = sheet.createRow(0);
>>             cell = row.createCell(0);
>>             // Note the bulletChar and newLineChar characters used when
>>             // building the String for the cell.
>>             contents = bulletChar +
>>                        "Item One" +
>>                        newLineChar +
>>                        bulletChar +
>>                        "Item Two" +
>>                        newLineChar +
>>                        bulletChar +
>>                        "Item Three" +
>>                        newLineChar +
>>                        bulletChar +
>>                        "Item Four";
>>             cell.setCellValue(new HSSFRichTextString(contents));
>>             // Set the cell sstyle to ensure the contents wrap.
>>             cell.setCellStyle(wrapStyle);
>>             
>>             // This just sets the height of the row and the width to allow
>> the
>>             // list to be seen clearly.
>>             row.setHeight((short)1000);
>>             sheet.setColumnWidth(0, 5000);
>>             workbook.write(fos);
>>
>>
>>
>> deep4u wrote:
>>     
>>> Hi Mark,
>>>             Thanks for spending u r valuable time. i have one more doubt
>>> can we create bullets in excel using apche poi.If u know please let me
>>> know how to do.
>>>
>>> Thanks,
>>>
>>> MSB wrote:
>>>       
>>>> Oh, well done, glad that I was finally able to help you find a solution
>>>> even if it should have been obvious to me that the anchor would only be
>>>> an influence once the file was opened using Excel, sorry about that.
>>>> Even though you have a workable solution, just in case there are others
>>>> following this thread, I am still going to post the demonstration code I
>>>> have put together - the html stuff is below everything else, so just
>>>> scroll down for that.
>>>>
>>>> Currently, it only adjusts the width of the image and only works in
>>>> situations where the column is far wider than the image. Later on, I am
>>>> going to see if I can extend it to deal with the situation where the
>>>> column is narrower than the image and where the image is placed across a
>>>> number of columns. Once I have done this, I will try to do similar for
>>>> rows.
>>>>
>>>> import java.io.File;
>>>> import java.io.FileInputStream;
>>>> import java.io.FileOutputStream;
>>>> import java.io.ByteArrayOutputStream;
>>>> import java.io.FileNotFoundException;
>>>> import java.io.IOException;
>>>>
>>>> import org.apache.poi.hssf.usermodel.HSSFWorkbook;
>>>> import org.apache.poi.hssf.usermodel.HSSFSheet;
>>>> import org.apache.poi.hssf.usermodel.HSSFRow;
>>>> import org.apache.poi.hssf.usermodel.HSSFCell;
>>>> import org.apache.poi.hssf.usermodel.HSSFCellStyle;
>>>> import org.apache.poi.hssf.usermodel.HSSFFont;
>>>> import org.apache.poi.hssf.usermodel.HSSFRichTextString;
>>>> import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
>>>> import org.apache.poi.hssf.usermodel.HSSFPatriarch;
>>>>
>>>> /**
>>>>  * An instance of this class demonstrates that it is possible to
>>>> determine the
>>>>  * width and location of an image dynamically.
>>>>  *
>>>>  * Currently, it is limited to setting the width of an image wihin a
>>>> column
>>>>  * whose own width is far greater than that of the image. It cannot yet
>>>> handle
>>>>  * situations where the image may lie across several columns and nor can
>>>> it
>>>>  * (yet) alter the height of the image.
>>>>  *
>>>>  * @author Mark B [[email protected]]
>>>>  * @version 1.00 30th July 2009.
>>>>  */
>>>> public class WorkbookFromTemplate {
>>>>
>>>>     public void buildWorkbookFromTemplate(String imageFilename,
>>>>                                           String outputFilename)
>>>>                                      throws IOException,
>>>> FileNotFoundException {
>>>>         File outputFile = null;
>>>>         FileOutputStream fos = null;
>>>>         HSSFWorkbook workbook = null;
>>>>         HSSFSheet sheet = null;
>>>>         HSSFRow row = null;
>>>>         HSSFCell cell = null;
>>>>         HSSFCellStyle style = null;
>>>>         HSSFFont font = null;
>>>>         HSSFClientAnchor anchor = null;
>>>>         HSSFPatriarch patriarch = null;
>>>>         double columnWidthCharUnits = 0.0;
>>>>         double columnWidthPixels = 0.0;
>>>>         double columnWidthMillimetres = 0.0;
>>>>         double coordinatePositionsPerMillimetre = 0.0;
>>>>         int leftBorder = 0;
>>>>         int pictureWidth = 0;
>>>>
>>>>         // These values set the width of the border and the size of the
>>>>         // image.
>>>>         int reqBorder = 5;
>>>>         int reqPictureWidth = 25;
>>>>         
>>>>         String contents = null;
>>>>         try {
>>>>             workbook = new HSSFWorkbook();
>>>>             sheet = workbook.createSheet();
>>>>             style = workbook.createCellStyle();
>>>>             font = workbook.getFontAt((short)1);
>>>>             // By changing the point size of the font from 10 to 12, 14,
>>>> 16, 8,
>>>>             // etc, it is possible to check that the image is re-sized
>>>> correctly
>>>>             // as the width of the column responds to changes in the
>>>> size of the
>>>>             // font
>>>>             font.setFontHeightInPoints((short)10);
>>>>             style.setFont(font);
>>>>
>>>>             // Populate the first cell in rows 9 to 20 with long Strings
>>>> of
>>>>             // data so that the resize operation will be quite dramatic.
>>>>             for(int i = 9; i < 20; i++) {
>>>>                 row = sheet.createRow(i);
>>>>                 cell = row.createCell(0);
>>>>                 contents = ("Setting the value of cell 1 in row " +
>>>>                             i +
>>>>                             " the current time in milliseconds time is "
>>>> +
>>>>                             System.currentTimeMillis());
>>>>                 cell.setCellValue(new HSSFRichTextString(contents));
>>>>                 cell.setCellStyle(style);
>>>>             }
>>>>
>>>>             // Autosize the column to accomdate the contents
>>>>             sheet.autoSizeColumn((short)0);
>>>>
>>>>             // Recover the size of the column in Excel's character
>>>> units.
>>>>             columnWidthCharUnits = sheet.getColumnWidth(0);
>>>>             // Convert from Excels' character units into pixels to get
>>>> the total
>>>>             // width of the column in pixels
>>>>             columnWidthPixels = ExcelUtil.widthUnits2Pixel(
>>>>                     (short)columnWidthCharUnits);
>>>>             // Convert from pixels to millimetres to get to total width
>>>> of the
>>>>             // column in millimetres
>>>>             columnWidthMillimetres = columnWidthPixels /
>>>>                     ExcelUtil.PIXELS_PER_MILLIMETRES;
>>>>             // We 'know' that the column conatins a maximum of 1023
>>>> co-ordinate
>>>>             // positions. Calculate how many of these co-ordinate
>>>> positions
>>>>             // there are in a millimetre.
>>>>             coordinatePositionsPerMillimetre =
>>>>                     ExcelUtil.TOTAL_COLUMN_COORDINATE_POSITIONS /
>>>>                     columnWidthMillimetres;
>>>>             // Calculate the number of co-ordinate positions necessary
>>>> to leave
>>>>             // a border to the left of the image the required thickness.
>>>>             leftBorder = (int)(reqBorder *
>>>> coordinatePositionsPerMillimetre);
>>>>             // Calculate the number of co-ordinate positions necessary
>>>> to
>>>>             // set the width of the image to the required number of
>>>> millimetres.
>>>>             // Remember to add on the thickness of the left border.
>>>>             pictureWidth = (int)(leftBorder +
>>>>                     (reqPictureWidth *
>>>> coordinatePositionsPerMillimetre));
>>>>
>>>>             // Create the anchor instance. Note that the parameters that
>>>>             // specify the column(s) the image should occupy - they are
>>>>             // parameters number 5 and 7 - both specify the same column;
>>>> in
>>>>             // this case 0. Normally, this would prevent the image from
>>>>             // being seen; the settings of the first four parameters can
>>>>             // be used to 'fine tune' this behaviour.
>>>>             //
>>>>             // Parameter 1 moves picture in from left hand edge.
>>>>             // Parameter 2 moves top edge of picture downwards
>>>>             // Parameter 3 moves the right hand edge of the image
>>>>             // Parameter 4 moves the bottom edge of the image down
>>>>             //
>>>>             anchor = new HSSFClientAnchor(leftBorder,   // Inset image
>>>> from left
>>>>                                           0,            // Inset image
>>>> from top
>>>>                                           pictureWidth, // Width of
>>>> image
>>>>                                           0,            // Height of
>>>> image
>>>>                                           (short)0,     // 'From' column
>>>>                                           0,            // 'From' row
>>>>                                           (short)0,     // 'To' column
>>>>                                           8);           // 'To' row
>>>>             anchor.setAnchorType(3);
>>>>
>>>>             // Add the image to the workbook
>>>>             int index =
>>>> workbook.addPicture(this.imageToBytes(imageFilename),
>>>>                     HSSFWorkbook.PICTURE_TYPE_JPEG);
>>>>             // Get the drawing patriarch and create the picture within
>>>> it
>>>>             patriarch = sheet.createDrawingPatriarch();
>>>>             patriarch.createPicture(anchor, index);
>>>>
>>>>             // Save the file away
>>>>             outputFile = new File(outputFilename);
>>>>             fos = new FileOutputStream(outputFile);
>>>>             workbook.write(fos);
>>>>         }
>>>>         finally {
>>>>             if(fos != null) {
>>>>                 try {
>>>>                     fos.close();
>>>>                     fos = null;
>>>>                 }
>>>>                 catch(IOException ioEx) {
>>>>                     // Not much I can do here!!
>>>>                 }
>>>>             }
>>>>         }
>>>>     }
>>>>
>>>>     /**
>>>>      * Loads - reads in and converts into an array of byte(s) - an image
>>>> from
>>>>      * a named file.
>>>>      *
>>>>      * @param imageFilename A String that encapsulates the path to and
>>>> name
>>>>      *                      of the file that contains the image which is
>>>> to be
>>>>      *                      'loaded'.
>>>>      * @return An array of type byte that contains the raw data of the
>>>> named
>>>>      *         image.
>>>>      * @throws java.io.FileNotFoundException Thrown if it was not
>>>> possible to
>>>>      *                                       open the specified file.
>>>>      * @throws java.io.IOException Thrown if reading the file failed or
>>>> was
>>>>      *                             interrupted.
>>>>      */
>>>>     private byte[] imageToBytes(String imageFilename)
>>>>                                      throws FileNotFoundException,
>>>> IOException {
>>>>         File imageFile = null;
>>>>         FileInputStream fis = null;
>>>>         ByteArrayOutputStream bos = null;
>>>>         int read = 0;
>>>>         try {
>>>>             imageFile = new File(imageFilename);
>>>>             fis = new FileInputStream(imageFile);
>>>>             bos = new ByteArrayOutputStream();
>>>>             while((read = fis.read()) != -1) {
>>>>                 bos.write(read);
>>>>             }
>>>>             return(bos.toByteArray());
>>>>         }
>>>>         finally {
>>>>             if(fis != null) {
>>>>                 try {
>>>>                     fis.close();
>>>>                     fis = null;
>>>>                 }
>>>>                 catch(IOException ioEx) {
>>>>                     // Nothing to do here
>>>>                 }
>>>>             }
>>>>         }
>>>>     }
>>>>
>>>>     private String getContentsAsString(HSSFCell cell) {
>>>>         String contents = null;
>>>>         switch(cell.getCellType()) {
>>>>             case HSSFCell.CELL_TYPE_BLANK:
>>>>             case HSSFCell.CELL_TYPE_BOOLEAN:
>>>>             case HSSFCell.CELL_TYPE_ERROR:
>>>>             case HSSFCell.CELL_TYPE_FORMULA:
>>>>             case HSSFCell.CELL_TYPE_NUMERIC:
>>>>                 contents = String.valueOf(cell.getNumericCellValue());
>>>>                 break;
>>>>             case HSSFCell.CELL_TYPE_STRING:
>>>>                 contents = cell.getRichStringCellValue().getString();
>>>>                 break;
>>>>         }
>>>>         return(contents);
>>>>     }
>>>>
>>>>     /**
>>>>      * @param args the command line arguments
>>>>      */
>>>>     public static void main(String[] args) {
>>>>         try {
>>>>             new WorkbookFromTemplate().buildWorkbookFromTemplate(
>>>>                 "...Path to and name of image file....",
>>>>                 "...Path to and name of document you want to
>>>> create....");
>>>>         }
>>>>         catch(IOException ioEx) {
>>>>             System.out.println("Caught a: " +
>>>> ioEx.getClass().getName());
>>>>             System.out.println("Message: " + ioEx.getMessage());
>>>>             System.out.println("Stacktrace follows..................");
>>>>             ioEx.printStackTrace(System.out);
>>>>         }
>>>>     }
>>>> }
>>>>
>>>> /**
>>>>  * Utility methods used to perform conversions between Excel's character
>>>>  * based column and row size measurements and pixels. The clas also
>>>> contains
>>>>  * various constants that are required in other calculations.
>>>>  *
>>>>  * @author xio[[email protected]]
>>>>  * @version 1.01 30th July 2009.
>>>>  *      Additional constants added by Mark B [[email protected]].
>>>>  */
>>>> public class ExcelUtil {
>>>>
>>>>     public static final int TOTAL_COLUMN_COORDINATE_POSITIONS = 1023; //
>>>> MB
>>>>     public static final int TOTAL_ROW_COORDINATE_POSITIONS = 255;     //
>>>> MB
>>>>     public static final int PIXELS_PER_INCH = 96;                     //
>>>> MB
>>>>     public static final double PIXELS_PER_MILLIMETRES = 3.78;         //
>>>> MB
>>>>     public static final short EXCEL_COLUMN_WIDTH_FACTOR = 256;
>>>>     public static final int UNIT_OFFSET_LENGTH = 7;
>>>>     public static final int[] UNIT_OFFSET_MAP = new int[]
>>>>         { 0, 36, 73, 109, 146, 182, 219 };
>>>>
>>>>     /**
>>>>      * pixel units to excel width units(units of 1/256th of a character
>>>> width)
>>>>      * @param pxs
>>>>      * @return
>>>>      */
>>>>     public static short pixel2WidthUnits(int pxs) {
>>>>         short widthUnits = (short) (EXCEL_COLUMN_WIDTH_FACTOR *
>>>>                 (pxs / UNIT_OFFSET_LENGTH));
>>>>         widthUnits += UNIT_OFFSET_MAP[(pxs % UNIT_OFFSET_LENGTH)];
>>>>         return widthUnits;
>>>>     }
>>>>
>>>>     /**
>>>>      * excel width units(units of 1/256th of a character width) to pixel
>>>> units
>>>>      * @param widthUnits
>>>>      * @return
>>>>      */
>>>>     public static int widthUnits2Pixel(short widthUnits) {
>>>>         int pixels = (widthUnits / EXCEL_COLUMN_WIDTH_FACTOR)
>>>>                 * UNIT_OFFSET_LENGTH;
>>>>         int offsetWidthUnits = widthUnits % EXCEL_COLUMN_WIDTH_FACTOR;
>>>>         pixels += Math.round((float) offsetWidthUnits /
>>>>                 ((float) EXCEL_COLUMN_WIDTH_FACTOR /
>>>> UNIT_OFFSET_LENGTH));
>>>>         return pixels;
>>>>     }
>>>> }
>>>>
>>>> Here it the html stuff you asked about. Note that it does depend on your
>>>> knowing in advance the sort of markup you will be getting; in terms of
>>>> the entities. If you do not know this then there are other options you
>>>> could use. One would be to create a full blown parser for the html - for
>>>> which there is support in the jdk - but even this relies upon your
>>>> knowing which tags mark the beginning and ending of the information you
>>>> are interested in.
>>>>
>>>>             String htmlExpression = "  <h3> " +
>>>>                     " User Interface </h3>";
>>>>
>>>>             // I want to extract the words 'Uesr Interface' from the
>>>> html
>>>>             // markup encapsulated within the hetmlExpression String.
>>>> Looking
>>>>             // at it, I can see that the tag that folows the text I am
>>>> after
>>>>             // is  so the first thing to do is search for that tag.
>>>>             //
>>>>             // To do this, I am using the indexOf() method which returns
>>>> the
>>>>             // position of the FIRST occurrence of it's parameter
>>>> starting
>>>>             // from the beginning of the String. There is also the
>>>> lastIndexOf()
>>>>             // method which will start at the end of the String and find
>>>> the
>>>>             // last occurrence of it's parameter.
>>>>             //
>>>>             int endPoint = htmlExpression.indexOf("");
>>>>             //
>>>>             // As I am dealing with html, I know that the character that
>>>> marks
>>>>             // the start point of the text I am after is the closing
>>>> brace of
>>>>             // the preceding tag. So, I can search backwards through the
>>>>             // htmlExpression for that closing brace starting from the
>>>> point
>>>>             // I have already found above
>>>>             //
>>>>             int startPoint = htmlExpression.lastIndexOf(">", endPoint);
>>>>             //
>>>>             // Now I have both the starting and ending points for the
>>>> substring
>>>>             // I can simply extract it using the substring() method.
>>>>             //
>>>>             System.out.println("[" +
>>>>                     htmlExpression.substring(startPoint, endPoint) +
>>>>                     "]");
>>>>             //
>>>>             // Note that here, you are also seeing the search character
>>>> - the >
>>>>             // character - included in the substring. This is beacause
>>>> of the
>>>>             // way the indexOf() family of methods works when combined
>>>> with the
>>>>             // substring method; they assume you want to return the
>>>> search
>>>>             // character. If you do not, then add on to the index the
>>>> length of the
>>>>             // search String, in this case 1;
>>>>             //
>>>>             startPoint++;
>>>>             System.out.println("[" +
>>>>                     htmlExpression.substring(startPoint,
>>>> endPoint).trim() +
>>>>                     "]");
>>>>             //
>>>>             // Note as well that I have also stripped out the whitespave
>>>> using
>>>>             // the trim() method.
>>>>
>>>> As for spending the time to help out, it's an investment really as it
>>>> has yielded some code that can be added to the examples section of the
>>>> documentation and others will - hopefully - benefit.
>>>>
>>>> Yours
>>>>
>>>> Mark B
>>>>
>>>>
>>>> deep4u wrote:
>>>>         
>>>>> Hi Mark,
>>>>>            It is working ,Thanks a lot for spending time for me.
>>>>> Regarding htm content in cell can u expalin clearly how to do .
>>>>>
>>>>> Thanks,
>>>>>
>>>>>
>>>>> MSB wrote:
>>>>>           
>>>>>> With regard to the html, you will have to parse it to remove the tags
>>>>>> and extract the text you want to place into the cell. Sadly, there is
>>>>>> no 'automatic' way to accomplish what you are after, but it should be
>>>>>> easy enough using the idexOf() and substring() methods of the String
>>>>>> class for example.
>>>>>>
>>>>>> Sorry about the image explanation, it was a little complicated at
>>>>>> first glance.
>>>>>>
>>>>>> Think of a single cell on a spreadsheet. It is possible to identify
>>>>>> any location within that cell by a pair of co-ordinates, x and y; the
>>>>>> co-ordinate 0, 0 is the top left hand corner of the cell for example.
>>>>>> The compete set of co-ordinates is limited; x values can only be in
>>>>>> the range o to 1023 and y values in the range 0 to 255. This
>>>>>> co-oridnate system seems to remain fixed irrespective of the size of
>>>>>> the cell; that is to say the cell is always 1023 by 255 units.
>>>>>>
>>>>>> As you know, the HSSFClientAnchor class takes eight parameters. The
>>>>>> latter four identify the rows and columns that the image will span
>>>>>> whilst the first four determine the locations of the top left and
>>>>>> bottom right hand corners of the image within a cell using that
>>>>>> co-ordinate system I have just described. 
>>>>>>
>>>>>> Typically, the HSSFClientAnchor class is used like this;
>>>>>>
>>>>>> HSSFCientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, 0, 0, 1, 8);
>>>>>>
>>>>>> Which describes the situation where an image would span from column 0,
>>>>>> row 0 to column 1, row 8. It is this type of setup that causes the
>>>>>> problem you have seen; expand column 1 and the image expands with it
>>>>>> whatever we try to do with the anchor's type.
>>>>>>
>>>>>> Well, I have found that it is possible to do something like the
>>>>>> folowing;
>>>>>>
>>>>>> HSSFCientAnchor anchor = new HSSFClientAnchor(0, 0, 255, 255, 0, 0, 0,
>>>>>> 0);
>>>>>>
>>>>>> This will place the image in cell A1 and the size of the image will be
>>>>>> 255 'units' square; the units relate to the co-ordinate system and not
>>>>>> to any measure of size such as a centimeter, a point, a pixel, etc. I
>>>>>> cannot guarantee the paramaters are in the correct order as I am
>>>>>> writing this without consulting the javadoc but I hope it explains
>>>>>> what I mean.
>>>>>>
>>>>>> What I am going to try to accomplish is to find a way to map from a
>>>>>> real size - I am aiming at millimeters currently - to the coordinate
>>>>>> system so that it is possible to say, in effect;
>>>>>>
>>>>>> "insert this image into cell A1. Place it 10mm in from the left hand
>>>>>> edge of the cell and 10mm down from the top of the cell. Make the
>>>>>> image 25mm wide and 30mm high."
>>>>>>
>>>>>> Then by setting the various parameters of the HSSFClientAnchor class,
>>>>>> the image will be inserted into the correct location and sized
>>>>>> appropriately.
>>>>>>
>>>>>> To make use of the technique, I think that you will need to do the
>>>>>> following;
>>>>>>
>>>>>> 1. Populate the sheet.
>>>>>> 2. Expand the column in question.
>>>>>> 3. Place the image on the sheet.
>>>>>>
>>>>>> This order is necessary because we are having to adjust the size of
>>>>>> the image in response to the re-sizing of the column as that is the
>>>>>> event that deforms it. It is not possible to apply this
>>>>>> retrospectively, so the image has to be sized and placed once the
>>>>>> column is re-sized.
>>>>>>
>>>>>> Hope that helps but do not worry too much at this stage if it sound
>>>>>> confusing, the code will help to clear up any confusion I hope - and
>>>>>> assuming I can get it to work!!
>>>>>>
>>>>>> Mark B
>>>>>>
>>>>>>
>>>>>>
>>>>>> deep4u wrote:
>>>>>>             
>>>>>>> Hi Mark,
>>>>>>>             I didn't get that one. can u expalian clearly and i have
>>>>>>> one more doubt. suppose in a cell i wrore html content example
>>>>>>> <html><p><h6>Market value</h6></p></html>, but i need only dispaly
>>>>>>> purpose Market value. eleminating the html tags. for this is there
>>>>>>> any way, please let me know.
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>>
>>>>>>> MSB wrote:
>>>>>>>               
>>>>>>>> I think that I might be on to a technique to solve this specific
>>>>>>>> sort of problem.
>>>>>>>>
>>>>>>>> Firstly, I have found out that it is possible to 'place' an image
>>>>>>>> into a specific cell by setting all of the co-ordinates for that
>>>>>>>> cell - the last four parameters of the HSSFClientAnchor class - to
>>>>>>>> the same value. So, to place an image in cell A1, the last four
>>>>>>>> parameters would be 0, 0, 0, 0.
>>>>>>>>
>>>>>>>> Secondly, those first four parameters of the HSSFClientAnchor class
>>>>>>>> - dx1, dx2, dy1 and dy2 - determine the locations of the top left
>>>>>>>> and bottom right ahnd corners of the image within the cell; and this
>>>>>>>> is to my mind the crucial point. By limiting the location to just
>>>>>>>> one cell using the latter four parameters and then playing with the
>>>>>>>> values of the first four, it is possible to place an image within a
>>>>>>>> cell and to determine the size of that image.
>>>>>>>>
>>>>>>>> Thirdly, it seems that the co-ordinate system within the cell is
>>>>>>>> fixed with regard to the range of values. Apparantly, moving from
>>>>>>>> the top of the cell downwards, the range of co-ordinate values runs
>>>>>>>> from 0 to 255. Moving from the right hand edge of the cell
>>>>>>>> leftwards, the co-ordinate values move from 0 to 1023. The challenge
>>>>>>>> I now have to crack is determining how these co-ordinate values can
>>>>>>>> be manipulated to ensure that an image is inserted at the correct
>>>>>>>> location within the cell and is sized appropriately.
>>>>>>>>
>>>>>>>> Again, I think that I am onto apossible solution but it involves
>>>>>>>> converting between Excel's system of expressing the columns width to
>>>>>>>> pixels, determining the 'actual' width of the column, caculating now
>>>>>>>> many pixels - how far and how large - to set the image and then
>>>>>>>> converting this back into the co-ordinate systems values. Could be a
>>>>>>>> bit tricky and I will not have the time to work on it during the day
>>>>>>>> today as we are catching up on the work we missed yesterday owing to
>>>>>>>> the rain. As always though, I will post if I make any progress.
>>>>>>>>
>>>>>>>> Yours
>>>>>>>>
>>>>>>>> Mark B
>>>>>>>>
>>>>>>>>
>>>>>>>> deep4u wrote:
>>>>>>>>                 
>>>>>>>>> Hi mark,
>>>>>>>>>             when u free send me the code.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>>
>>>>>>>>> MSB wrote:
>>>>>>>>>                   
>>>>>>>>>> The image ought to be fine. Using Excel, it is possible to set the
>>>>>>>>>> same sort of properties that you can with POI, i.e. that the image
>>>>>>>>>> should not move or resize itself with the cells. To do this using
>>>>>>>>>> 'my' version of Excel, you select the image on the worksheet and
>>>>>>>>>> click on the right hand mouse button; this pops open a menu from
>>>>>>>>>> which you can select the 'Size and Properties' option. The options
>>>>>>>>>> screen that appears in response to this has a number of tabs on
>>>>>>>>>> it. One of them is labelled 'Properties' and selecting this allows
>>>>>>>>>> you to say how the image should respond to resizing of the cells.
>>>>>>>>>> I would select the 'Don't move or size with cells' option. Then
>>>>>>>>>> the image ought to remain tha same size irrespective of what you
>>>>>>>>>> do with the columns or rows.
>>>>>>>>>>
>>>>>>>>>> If you are in no hurry, I can put together some code later today
>>>>>>>>>> to test this hypothesis and then post the results to you. Sadly, I
>>>>>>>>>> have to leave in about an hour to help a group of volunteers
>>>>>>>>>> construct a flight of steps linking two footpaths together - which
>>>>>>>>>> should be fun given the weather forecast today - but should be
>>>>>>>>>> able to get some code together this evening.
>>>>>>>>>>
>>>>>>>>>> Yours
>>>>>>>>>>
>>>>>>>>>> Mark B
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> deep4u wrote:
>>>>>>>>>>                     
>>>>>>>>>>> Hi mark,
>>>>>>>>>>>             I need to create a excel dynamically means based On
>>>>>>>>>>> weekly, Monthly, suppose this is current week so
>>>>>>>>>>> 07/24/09-07/31/09,...next based on months  july month the name
>>>>>>>>>>> excelsheet will be "july.xls" , and next nonth "August.xls"... If
>>>>>>>>>>> i taking a template ok but in my program i will set autosize on
>>>>>>>>>>> that no streched the image?
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> MSB wrote:
>>>>>>>>>>>                       
>>>>>>>>>>>> You need to do the following;
>>>>>>>>>>>>
>>>>>>>>>>>> Start Excel
>>>>>>>>>>>> If necessary, open a new workbook - Excel usually opens up with
>>>>>>>>>>>> a new, empty workbook so this may not be necessary.
>>>>>>>>>>>> Select Insert->Picture and navigate your way to where the logo
>>>>>>>>>>>> image is stored. Select (highlight) the image and then click on
>>>>>>>>>>>> the Insert button.
>>>>>>>>>>>> Now, you should see that the logo has been inserted into the
>>>>>>>>>>>> worksheet and you can use the mouse to drag it into the correct
>>>>>>>>>>>> location and re-size it as necessary.
>>>>>>>>>>>> Save the file away and remember where you stored it and the name
>>>>>>>>>>>> you used.
>>>>>>>>>>>>
>>>>>>>>>>>> That has created the template that you will pick up using POI
>>>>>>>>>>>> and populate with data. All you need to do is something like
>>>>>>>>>>>> this;
>>>>>>>>>>>>
>>>>>>>>>>>> File file = new File("..Path to and name of the file you created
>>>>>>>>>>>> above..");
>>>>>>>>>>>> FileInputStream fis = new FileInputStream(file);
>>>>>>>>>>>> HSSFWorkbook workbook = new HSSFWorkbook(fis);
>>>>>>>>>>>> HSSFSheet sheet = workbook.getSheetAt(0);
>>>>>>>>>>>>
>>>>>>>>>>>> and when you have your sheet, populate it in the usual manner
>>>>>>>>>>>> and then save the completed workbook away again, most likely
>>>>>>>>>>>> using a different name so that the template can be used again
>>>>>>>>>>>> and again as the basis for further documents. It is common to
>>>>>>>>>>>> see users do this sort of thing as POI's image manipulation
>>>>>>>>>>>> facilities are not quite as feature rich as are Excel's.
>>>>>>>>>>>>
>>>>>>>>>>>> Hope that helps. If it is not clear, I will create a template
>>>>>>>>>>>> and some code that picks it up and populates it and PM both to
>>>>>>>>>>>> you; just let me know.
>>>>>>>>>>>>
>>>>>>>>>>>> Yours
>>>>>>>>>>>>
>>>>>>>>>>>> Mark B
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> deep4u wrote:
>>>>>>>>>>>>                         
>>>>>>>>>>>>> Hi mark,
>>>>>>>>>>>>>            I need to create Excel sheet dynamically with logo.
>>>>>>>>>>>>> But using Template how it is possible.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> MSB wrote:
>>>>>>>>>>>>>                           
>>>>>>>>>>>>>> So, setting the anchor type does not solve the problem?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> In that case, I think that your only recourse is to create a
>>>>>>>>>>>>>> document template using Excel and to place the logo onto the
>>>>>>>>>>>>>> document with it. Then you should be able to safely use
>>>>>>>>>>>>>> HSSF/XSSF to populate the worksheet.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Yours
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Mark B
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> deep4u wrote:
>>>>>>>>>>>>>>                             
>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>     i use the poi 3.5 also image will be expanding. I write
>>>>>>>>>>>>>>> like this
>>>>>>>>>>>>>>>  anchor.setAnchorType(HSSFClientAnchor.DONT_MOVE_AND_RESIZE);
>>>>>>>>>>>>>>> or  anchor.setAnchorType(3);  how to reslove this.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> deep4u wrote:
>>>>>>>>>>>>>>>                               
>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>        I am new to this Library. Its working great, i used
>>>>>>>>>>>>>>>> logo (image) in the excel sheet. with the auto sizing the
>>>>>>>>>>>>>>>> image also expanding and contracting according to that
>>>>>>>>>>>>>>>> column data. 
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Can i keep the image irrespective of the column size? 
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>                                 
>>>>>>>>>>>>>>>                               
>>>>>>>>>>>>>>                             
>>>>>>>>>>>>>                           
>>>>>>>>>>>>                         
>>>>>>>>>>>                       
>>>>>>>>>>                     
>>>>>>>>>                   
>>>>>>>>                 
>>>>>>>               
>>>>>>             
>>>>>           
>>>>         
>>>       
>>     
>
>   

Reply via email to