当前位置: 首页 > 面试题库 >

将电子表格公式转换为Java

刘才俊
2023-03-14
问题内容

有哪些工具可将OpenOffice或Excel电子表格(及其所有公式)转换为可在运行时调用的Java对象?

显然,这只会构成一个计算引擎,而只是数字和文本,而不是计时或API调用。

即使使用命名的单元格范围来(有效)命名变量,输出代码也可能难以理解。需要进行重构以使其更像普通的Java代码。但是,我认为这对原型某些数据处理类型的作业非常有用。或用于嵌入一些由高级Excel用户维护的计算引擎。

编辑 :一个简单的例子:

出现

        A               B               C               D
1       Mortgage Value  100,000.00
2       Interest rate   4.5%
3       Type            Interest-only
4       Years           3
5       Regular payment 4,500.00
6       Total interest  13,500.00

小区名称

        A               B               C               D
1       Mortgage Value  VALUE
2       Interest rate   INTEREST
3       Type            TYPE
4       Years           YEARS
5       Regular payment REGPYMT
6       Total interest  TOTALPYMT

配方

        A               B               C               D
1       Mortgage Value  100,000.00
2       Interest rate   4.5%
3       Type            Interest-only
4       Years           3
5       Regular payment =VALUE*INTEREST
6       Total interest  =YEARS*REGPYMT

会翻译成Java,就像:

package example.calcengine;
import java.math.*;
public class MyCalcEngine {

    // unnamed cells
    public String A1 = "Mortgage Value";
    public String A2 = "Interest rate";
    public String A3 = "Type";
    public String A4 = "Years";
    public String A5 = "Regular payment";
    public String A6 = "Total interest";

    // named cells
    public BigDecimal VALUE = new BigDecimal(100000.00);
    public BigDecimal INTEREST = new BigDecimal(0.045);
    public String TYPE = "Interest-only";
    public BigDecimal YEARS = new BigDecimal(3);
    public BigDecimal REGPYMT = new BigDecimal(0);
    public BigDecimal TOTALPYMT = new BigDecimal(0);

    // formulas
    public void calculate() {
      REGPYMT = VALUE.multiply(INTEREST);
      TOTALPYMT = REGPYMT.multiply(YEARS);
    }
}

我假设单元格为固定类型-java.math.BigDecimal或String。


问题答案:
  • Apache POI项目提供了可以读取(大多数情况下)Excel电子表格的Java代码。

  • Jacob的另一个项目提供了Java接口,用于自动进行Windows程序的COM自动化,当然包括Excel。您实际上是在用Java从外部使用Excel的API。



 类似资料:
  • 问题内容: 我正在寻找与该问答相反的方法:将excel或电子表格列字母转换为Pythonic格式的数字。 或这个,但在python中如何将列号(例如127)转换为excel列(例如AA) 问题答案: def colnum_string(n): string = “” while n > 0: n, remainder = divmod(n - 1, 26) string = chr(65 + re

  • 问题内容: 到目前为止,我一直尝试使用JavaMail api 创建类型的对象,然后获取其原始表示,但没有成功。我唯一可以获得的是电子邮件 内容 的原始表示形式,但是不包括标题,主题或收件人。我对可以帮助我创建电子邮件对象并获得其原始表示形式的任何建议,任何Java库感兴趣。原始表示应如下所示: 问题答案: 您正在寻找的是MimeMessag#writeTo,它将消息作为RFC 822格式流输出。

  • 问题内容: PublicKey.getEncoded(),返回一个包含SubjectPublicKeyInfo(x.509)格式的公共密钥的字节数组,如何将其转换为RSA公共密钥编码? 问题答案: 使用Bouncy Castle’s ,如下所示:

  • 问题内容: 我看过很多关于此的文章,但它们似乎已经过时,例如,没有一个Google Docs Spreadsheet网址具有关键参数。 然后,我阅读了此内容以访问数据 https://developers.google.com/gdata/samples/spreadsheet_sample 我的电子表格位于:https : //docs.google.com/spreadsheets/d/1SK

  • 问题内容: 还有一种将excel样式的列转换为数字(以1开头)的更pythonic的方法吗? 工作代码最多两个字母: 代码运行: 三个字母不起作用。 问题答案: 有一种方法可以使其变得更pythonic(可使用三个或更多字母,并使用较少的幻数): 并且作为使用reduce的单行代码(不检查输入并且可读性较低,所以我不推荐这样做):

  • 在我的iOS应用程序中,我必须转换一个电话号码(在联系人),并将其转换为国际格式(自动发送短信与extern库)。我看到了libPhoneNumber,但问题是我们必须输入国家代码,应用程序必须在所有(几乎)国家工作,所以我不知道用户的国家是什么。 以下是图书馆的工作原理: