隨筆-153  評(píng)論-235  文章-19  trackbacks-0

          目前比較流行的生成Excel文件的有poi和Jexcelapi

          poi加中文有問(wèn)題

          必需對(duì)每一個(gè)Cell設(shè):

          cell.setEncoding(HSSFCell.ENCODING_UTF_16);

          才不會(huì)中文亂碼.沒(méi)有找到更好的方法一次性設(shè)置所有Cell的字符屬性


          用Jexcelapi試下發(fā)現(xiàn)不會(huì)出現(xiàn)中文問(wèn)題,是因?yàn)樗琼n國(guó)人寫(xiě)的吧,以多字節(jié)字符為根點(diǎn)

          還是喜歡用Jexcelapi

          下載: http://sourceforge.net/project/showfiles.php?group_id=79926

          :)
          posted on 2007-03-21 19:06 流浪汗 閱讀(3573) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): JAVA/J2EE

          評(píng)論:
          # re: poi會(huì)中文亂碼,Jexcelapi不會(huì) 2007-08-16 16:26 | pkmuwen
          //EXCEL表的名
          String fileName = url+currDate+Book_Name;
          //獲得WORKBOOK
          HSSFWorkbook wb = new HSSFWorkbook();
          //獲得EXCEL表的名
          FileOutputStream fos = new FileOutputStream(fileName);
          //例子名
          ArrayList arraylist = new ArrayList();
          arraylist.add("語(yǔ)文");
          arraylist.add("數(shù)學(xué)");

          int arraylength = arraylist.size();
          //設(shè)置編碼
          //cell.setEncoding((short) HSSFCell.CELL_TYPE_STRING);
          for(int len=0;len<arraylength;len++){
          String name = (String)arraylist.get(len);
          //獲取SHEET名
          HSSFSheet sheet = wb.createSheet(name);
          for(int i=0;i<26;i++){
          //獲得行
          HSSFRow row = sheet.createRow((short)i);
          for(int j=0;j<26;j++){
          // HSSFCell cell = null;
          // cell.setEncoding((short) HSSFCell.CELL_TYPE_STRING);
          //獲得單元格
          // row.createCell((short)j).setEncoding((short) HSSFCell.ENCODING_UTF_16);
          //row.createCell((short)j).setEncoding(HSSFCell.ENCODING_UTF_16);
          HSSFCell cell = row.createCell((short)j);
          // cell.setEncoding(HSSFCell.ENCODING_UTF_16);
          cell.setEncoding((short)HSSFCell.ENCODING_UTF_16);
          row.createCell((short)j).setCellValue("靠不出來(lái)");

          }
          }
          }
          //數(shù)據(jù)WRITE
          wb.write(fos);
          //關(guān)閉本次數(shù)據(jù)流寫(xiě)入
          fos.close();



          寫(xiě)了cell.setEncoding(HSSFCell.ENCODING_UTF_16); 照樣出現(xiàn)亂碼。。
          幫看看 那里寫(xiě)得不對(duì)  回復(fù)  更多評(píng)論
            
          # re: poi會(huì)中文亂碼,Jexcelapi不會(huì) 2007-08-16 20:51 | 流浪汗
          在使用這前設(shè)置
          你的代碼沒(méi)有縮進(jìn),沒(méi)有看下去
          你這句當(dāng)然不行了
          row.createCell((short)j).setCellValue("靠不出來(lái)");



          我的如下:

          cell = sheetRow.createCell((short) 1);
          cell.setEncoding(HSSFCell.ENCODING_UTF_16);
          cell.setCellValue(user.getUserName());  回復(fù)  更多評(píng)論
            
          # re: poi會(huì)中文亂碼,Jexcelapi不會(huì) 2007-08-17 11:33 | pkmuwen
          謝了 可以了
          我以后會(huì)注意代碼縮進(jìn)的 不好意思
            回復(fù)  更多評(píng)論
            
          # re: poi會(huì)中文亂碼,Jexcelapi不會(huì) 2007-08-17 11:41 | pkmuwen
          對(duì)了 我還有個(gè)問(wèn)題請(qǐng)幫解答:
          我要得到SHEET的個(gè)數(shù)是用:
          wb.getNumberOfSheets()
          這個(gè)方法嗎?
            回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 白银市| 阿拉善右旗| 襄垣县| 博白县| 会同县| 南京市| 天气| 马鞍山市| 民县| 林西县| 长兴县| 阜新| 务川| 饶阳县| 赤城县| 大丰市| 蛟河市| 安平县| 务川| 南郑县| 古蔺县| 田东县| 霞浦县| 雷波县| 章丘市| 达尔| 高陵县| 化州市| 西藏| 黎平县| 铁岭县| 江安县| 涞源县| 金堂县| 孟村| 商河县| 慈利县| 秦安县| 合肥市| 英德市| 神木县|