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

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

          poi加中文有問題

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

          cell.setEncoding(HSSFCell.ENCODING_UTF_16);

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


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

          還是喜歡用Jexcelapi

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

          :)
          posted on 2007-03-21 19:06 流浪汗 閱讀(3573) 評(píng)論(4)  編輯  收藏 所屬分類: 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("語文");
          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("靠不出來");

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



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



          我的如下:

          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è)問題請(qǐng)幫解答:
          我要得到SHEET的個(gè)數(shù)是用:
          wb.getNumberOfSheets()
          這個(gè)方法嗎?
            回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 行唐县| 宁武县| 桂林市| 新化县| 丰城市| 天水市| 贡山| 徐闻县| 海晏县| 宕昌县| 怀柔区| 普宁市| 红原县| 秭归县| 吴忠市| 昌宁县| 黄陵县| 普宁市| 通城县| 逊克县| 手机| 巫溪县| 大冶市| 乐东| 武鸣县| 瑞金市| 恭城| 高安市| 麻栗坡县| 乳山市| 沧源| 溧阳市| 定陶县| 尼玛县| 阿拉善右旗| 宜章县| 库尔勒市| 泗阳县| 荆州市| 东方市| 利川市|