一條老狗

                     老狗拉破車
          posts - 12, comments - 11, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          POI 如何得到 HSSFRow 的實際行高?

          Posted on 2007-07-27 14:22 一條老狗 閱讀(4103) 評論(2)  編輯  收藏 所屬分類: Java

          以下是官方的一個例子:

              HSSFWorkbook wb = new HSSFWorkbook();
              HSSFSheet s 
          = wb.createSheet();
              HSSFRow r 
          = null;
              HSSFCell c 
          = null;
              HSSFCellStyle cs 
          = wb.createCellStyle();
              HSSFFont f 
          = wb.createFont();
              HSSFFont f2 
          = wb.createFont();

              cs 
          = wb.createCellStyle();

              cs.setFont( f2 );
              
          //Word Wrap MUST be turned on
              cs.setWrapText( true );

              r 
          = s.createRow( (short2 );
              r.setHeight( (
          short0x349 );
              c 
          = r.createCell( (short2 );
              c.setCellType( HSSFCell.CELL_TYPE_STRING );
              c.setCellValue( 
          "Use \n with word wrap on to create a new line" );
              c.setCellStyle( cs );
              s.setColumnWidth( (
          short2, (short) ( ( 50 * 8 ) / ( (double1 / 20 ) ) );

              FileOutputStream fileOut 
          = new FileOutputStream( "workbook.xls" );
              wb.write( fileOut );
              fileOut.close();

           

          這里它是使用 r.setHeight((short)0x349) 寫死了行高的,如何根據實際內容自動計算出其行高呢?
          我們可以不設置其行高,此時Excel能夠正確顯示出來,但看上去太擠,不好看。
          我是希望在文字需要占的實際行高基礎上再加上一些空白,這樣才好看。
          但此時調用 r.getHeight() 取不到值。

          我想這個需求可能是實現不了了。

           


          評論

          # re: POI 如何得到 HSSFRow 的實際行高?[未登錄]  回復  更多評論   

          2009-06-18 13:16 by HI
          重新打開后,能取到.

          # re: POI 如何得到 HSSFRow 的實際行高?  回復  更多評論   

          2009-10-22 11:12 by 肖斌
          我自己寫的斌希望你能有收獲

          happyyou2009@gmail.com
          public static float getExcelCellAutoHeight(String str, float fontCountInline) {
          float defaultRowHeight = 12.00f;
          float defaultCount = 0.00f;
          for (int i = 0; i < str.length(); i++) {
          float ff = getregex(str.substring(i, i + 1));
          defaultCount = defaultCount + ff;
          }
          return ((int) (defaultCount / fontCountInline) + 1) * defaultRowHeight;
          }

          public static float getregex(String charStr) {

          if(charStr==" ")
          {
          return 0.5f;
          }
          // 判斷是否為字母或字符
          if (Pattern.compile("^[A-Za-z0-9]+$").matcher(charStr).matches()) {
          return 0.5f;
          }
          // 判斷是否為全角

          if (Pattern.compile("[\u4e00-\u9fa5]+$").matcher(charStr).matches()) {
          return 1.00f;
          }
          Map<String, String> map = new HashMap<String, String>();
          map.put("#", "#");
          map.put("。", "。");
          map.put(",", ",");
          map.put("、", "、");
          map.put(";", ";");
          map.put("(", "(");
          map.put(")", ")");
          map.put("=", "=");
          map.put("-", "-");
          map.put(" ", " ");
          map.put("×", "×");
          map.put("&", "&");
          map.put("!", "!");
          map.put("《", "《");
          map.put("》", "》");
          map.put("“", "“");
          map.put("”", "”");
          map.put("?", "?");
          map.put("+", "+");
          map.put("【", "【");
          map.put("】", "】");
          map.put("{", "{");
          map.put("}", "}");
          if (map.containsKey(charStr)) {
          return 1.00f;
          }
          if (Pattern.compile("[^x00-xff]").matcher(charStr).matches()) {
          return 1.00f;
          }
          return 0.5f;

          }


          主站蜘蛛池模板: 云梦县| 井陉县| 新丰县| 广宁县| 辛集市| 富裕县| 绍兴市| 柘荣县| 丰县| 孝昌县| 射阳县| 精河县| 麟游县| 固原市| 犍为县| 化德县| 中卫市| 平潭县| 湾仔区| 义乌市| 广安市| 崇礼县| 荣成市| 朔州市| 桐城市| 岑巩县| 苗栗市| 铁岭县| 射阳县| 泌阳县| 宣恩县| 茂名市| 九龙坡区| 图木舒克市| 芦溪县| 利辛县| 武义县| 凤翔县| 五华县| 四子王旗| 铁力市|