如题,谢谢!~~~

解决方案 »

  1.   

    一条一条的读出数据,对一条用POI或jacob把这条数据写到WORD 中去!
      

  2.   

    使用jacob需要加东西到系统文件夹里面,会给程序带来累赘POI是怎么用的???能给个简单的介绍或例子吗???
      

  3.   

    还有听说poi已經停止發展,似乎只能支援到word97...
    jacob只能用在Windows上面...
    这两点都是我不希望出现的,难道现在就没有一个符合JAVA习惯的技术来操作WORD吗???
      

  4.   

    我使用过poi写过excel,excel2003的写入没有问题哈,至于word是不是只支持到word97我不知道了,可以到他的官网上具体看看嘛!写excel的例子:
    public void OutPutExcelValue()//取得excel报表的内容
    {
           try
           {
            // 创建对Excel工作簿文件的引用
            HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(excelfile));
           //  .println("===SheetsNum===" + workbook.getNumberOfSheets());//获取sheet数
            for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++)
            {
              if (null != workbook.getSheetAt(numSheets))
              {
                HSSFSheet aSheet = workbook.getSheetAt(numSheets);//获得一个sheet
                //System.out.println("+++getFirstRowNum+++" +
                // aSheet.getFirstRowNum());//
                //System.out.println("+++getLastRowNum+++" +
                // aSheet.getLastRowNum());取得一个sheet的行数,注意行数从0开始计数
    //            RecordCount=aSheet.getLastRowNum()+1;
                for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++)
                {
                  if (null != aSheet.getRow(rowNumOfSheet))
                  {
                    HSSFRow aRow = aSheet.getRow(rowNumOfSheet);
                   //System.out.println(">>>getFirstCellNum<<<"+
                   // aRow.getFirstCellNum());
                   //System.out.println(">>>getLastCellNum<<<"+
                   // aRow.getLastCellNum());取得一行的单元割格数,注意行数从1开始计数
                  for (short cellNumOfRow = 0; cellNumOfRow <= (aRow.getLastCellNum()-1); cellNumOfRow++)
                  {                if (null != aRow.getCell(cellNumOfRow))
                    {
                      HSSFCell aCell = aRow.getCell(cellNumOfRow);
                       int cellType = aCell.getCellType();
                       //System.out.println(cellType);
                        switch (cellType)
                       {
                         case 0://Numeric,CELL_TYPE_NUMERIC
                          String CheckLength=String.valueOf(aCell.getNumericCellValue());
                          if(CheckLength.length()>18)
                          {
                            Message="错误,第"+(rowNumOfSheet+1)+"行"+(cellNumOfRow+1)+"列"+"单元格的内容超过最大长度";
                            ReturnCode=1;
                            return;
                          }
                          ReportValue[cellNumOfRow]= aCell.getNumericCellValue();
                          Message=String.valueOf(ReportValue[cellNumOfRow]);
                          //System.out.println(strCell);
                          break;
                         case 1://String
                          String strCell = aCell.getStringCellValue();
                          String tempstr=strCell.trim();
                          if(tempstr.length()==0)
                          {
                             ReportValue[cellNumOfRow]=0;
                          }
                          else
                          {
                             Message="错误,第"+(rowNumOfSheet+1)+"行"+(cellNumOfRow+1)+"列"+"单元格的内容不对,注意只可以是数字或空格或不输入!";
                             ReturnCode=1;
                             return;
                          }
                         //System.out.println(strCell);
                          break;
                         case 3:
                           ReportValue[cellNumOfRow]=0;
                           break;
                         default:
                             Message="错误,第"+(rowNumOfSheet+1)+"行"+(cellNumOfRow+1)+"列"+"单元格的内容不对,注意只可以是数字或空格或不输入!";
                             ReturnCode=1;
                             return;
                          //System.out.println("格式不对不读");//其它格式的数据
                      }
                    }
                   }
                  }
                 RecordCount=rowNumOfSheet+1;//取得成功处理的数据条数
                }
              }
            }
    //        System.out.print("aaa");
            Message="成功处理了"+RecordCount+"条数据";
           }
           catch (FileNotFoundException e)
           {
              Message="错误,未找到指定文件";
              ReturnCode=1;
           }
           catch (Exception e)
           {
             ReturnCode=1;
             Message=e.toString();
             e.printStackTrace();
    //         System.out.println("ReadExcelError" + e);
           }
           /*
          finally
          {
             //在无论出错还是不出错都执行的代码!
             Message="打开文件失败!";
     //        Message=
             ReturnCode=1;
          }*/
        }