2010-11-02 58 views
1

我目前正在创建一个使用Java jxl创建Excel的代码。只要我使用的公式存在,我就没有遇到任何问题。问题是,我需要输入一个excel无法找到的公式,因为我们使用特殊的excel来读取它。我需要我的代码保留无效的公式,而不是在单元格中写入= 1 ERROR(),以便在使用我们特殊的Excel打开我的文件时,它会获取值。我如何去做这件事?如何在Excel中使用Java输入无效公式

这是我的代码:

WorkbookSettings ws = new WorkbookSettings(); 
      ws.setLocale(new Locale("en", "EN")); 
      workbook = Workbook.createWorkbook(file, ws); 
      WritableSheet s = workbook.createSheet("Sheet1", 0); 
      WritableFont wf = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD); 
      DateFormat dateFormat = new DateFormat("M/d/yyyy H:mm"); 
      NumberFormat dp = new NumberFormat("#"); 
      NumberFormat dp2 = new NumberFormat("#.##"); 
      ResultSetMetaData rsmd = rs.getMetaData(); 
      int nRow = 0; 
      Label l = null; 
      Formula f = null; 
      for(int index = 1; index <= rsmd.getColumnCount(); index++) { 
       l = new Label(index-1,nRow,rsmd.getColumnName(index),new WritableCellFormat(wf)); 
       s.addCell(l); 
      } 

      nRow++; 
      while(rs.next()) { 
       String valueDate = VerifyNull.ifNull(rs.getString(1), Constant.BLANK); 
       f = new Formula(0,nRow,valueDate,new WritableCellFormat(dp)); 
       s.addCell(f); 
       String rateDate = VerifyNull.ifNull(rs.getString(2), Constant.BLANK); 
       f = new Formula(1,nRow,rateDate,new WritableCellFormat(dp)); 
       s.addCell(f); 
       String market = VerifyNull.ifNull(rs.getString(3), Constant.BLANK); 
       l = new Label(3,nRow,market,new WritableCellFormat(wf)); 
       s.addCell(l); 
       String ccy = VerifyNull.ifNull(rs.getString(4), Constant.BLANK); 
       l = new Label(4,nRow,ccy,new WritableCellFormat(wf)); 
       s.addCell(l); 
       String label = VerifyNull.ifNull(rs.getString(5), Constant.BLANK); 
       l = new Label(5,nRow,label,new WritableCellFormat(wf)); 
       s.addCell(l); 
       String quoteDate = VerifyNull.ifNull(rs.getString(6), Constant.BLANK); 
       f = new Formula(1,nRow,quoteDate,new WritableCellFormat(dp)); 
       s.addCell(f); 
       String bid = "="+VerifyNull.ifNull(rs.getString(7), Constant.BLANK); 

/**在出价= “BDP(” EURON Curncy”, “PX_BID”, “DATA”)1" 的值; */

   f = new Formula(6,nRow,bid,new WritableCellFormat(dp2)); 
       s.addCell(f); 

/**在要约= “BDP(” EURON Curncy”, “PX_ASK”, “DATA”)1" 的值; */

   String offer = "="+VerifyNull.ifNull(rs.getString(8), Constant.BLANK); 
       f = new Formula(7,nRow,offer,new WritableCellFormat(dp2)); 
       s.addCell(f); 
       String timeStamp = VerifyNull.ifNull(rs.getString(9), Constant.BLANK); 
       f = new Formula(8,nRow,timeStamp,new WritableCellFormat(dateFormat)); 
       s.addCell(f); 
       nRow++; 
      } 
      workbook.write(); 
      workbook.close(); 

回答

0

对不起,我只有时间能够快速回复,但你看着Apache POI呢?它的API可能对你有用。

但是,我不是100%确定这是写Excel的,因为我认为它的主要用途是读取MS Office文件。不过,可能值得一看。

0

问题是,我需要输入一个公式,其中excel将无法找到,因为我们使用特殊的excel来读取它。我需要我的代码保留无效的公式,而不是在单元格中写入= 1 ERROR(),以便在使用我们特殊的Excel打开我的文件时,它会获取值。

您的问题不是JExcel或POI。没有API能够帮助你找到一个无法找到的公式。

什么是“特殊excel”?如果是另一个文件,只需阅读并使用它。

你的问题很混乱。我很难理解究竟发生了什么。除非你能澄清,否则我投票结束。

1

我supose你的“特殊EXCEL”是,你有一个插件使用Visual Basic功能whithin单元格公式

我不知道如果JXL支持宏的当前版本,或至少不删除使用它修改现有的工作簿时,但在您的代码中,您不更新现有的工作簿,您正在创建一个新的工作簿

您是否尝试过使用代码打开一个现有的工作簿,其中的Visual Basic函数工作? (它可以是空的)。如果有效,您可以将该文件用作模板,将其复制到您想要的位置,重新命名并使用JXL编辑它