基于文本的java电子表格单元格

时间:2013-11-17 19:13:22

标签: java

我正在为我的java类开发基于文本的电子表格项目。我有实际的电子表格打印出来,我有一个阵列形式的单元格输入。问题是让单元格输入显示在电子表格中。

电子表格通过循环打印,看起来类似于:

    | A | B | C | D | E | F | G |
  --|---|---|---|---|---|---|---|
   1|   |   |   |   |   |   |   |
  --|---|---|---|---|---|---|---|
   2|   |   |   |   |   |   |   |
  --|---|---|---|---|---|---|---|
   3|   |   |   |   |   |   |   |
  --|---|---|---|---|---|---|---|
   4|   |   |   |   |   |   |   |
  --|---|---|---|---|---|---|---|
   5|   |   |   |   |   |   |   |
  --|---|---|---|---|---|---|---|

关于如何从数组中获取输入以在电子表格中打印的任何想法?我真的不是在寻找解决问题的方法,只是朝着正确的方向努力。任何帮助将不胜感激。

电子表格是通过System.out.print();

P.S。我会发布电子表格的屏幕上限,但我的帐户是低级别的。对不起,质量很差。

编辑:我无法发布确切的代码来立即打印电子表格(保存在另一台计算机上),但我可以提供说明。基本上我是在for循环中打印电子表格网格的每一行。字母是一个char变量,在循环中发生变化。数字也是如此,除了它们是int变量。整个事情就是在控制台中打印出字符。

编辑:以下是打印电子表格的代码:

for (char x = 'A' ; x <= 'G' ; x++) {
    System.out.print("      " + x + "       |");
}
System.out.println("");
System.out.print("---+--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+");
System.out.println("");
if (i == 0) {
    // 10-99 digit loop
    for (int j = 1 ; j <= length ; j++) {
        if (j >= 10) {
                System.out.print("" + j + " |              |              |              |              |              |              |              |");
            System.out.println("");
            System.out.print("---+--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+");
            System.out.println("");
        }
        else {
            // 1-9 digit loop
            System.out.print(" " + j + " |              |              |              |              |              |              |              |");
            System.out.println("");
            System.out.print("---+--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+");
            System.out.println("");
        }
    }
}

它还没有很好地优化(一旦我完成所有工作,我将处理它)但它确实打印电子表格。

2 个答案:

答案 0 :(得分:0)

你没有发表完整的例子,所以我不得不做出一些假设。

我假设您所讨论的数组是2D数组。因此,单元格A1引用数组中的[0][0]

为了使列的宽度正确,您需要扫描数组并确定最大的字符串(因为我假设您的数组包含字符串)。这是列的宽度。如果你没有想到这一点,你就会得到一堆格式化。

也许更好的选择是使用制表符而不是完全使用这些行?

无论如何,这意味着打印出来的-的数量将是动态的。您应该使用实用程序方法。接受列名称的东西,循环遍历数组的该列中的所有元素(确定列的宽度),最后返回那么多- s(作为字符串)。请注意,必须考虑表格中的任何间距。

现在桌子的轮廓尺寸正确,我们可以遍历2D阵列,打印出|和元素。

这是一个非常基本的示例,它不计算列的大小:

    String [][] tableData = { {"abc", "def"}, {"ghi", "jkl"} };

    // The header
    System.out.println("+-----+-----+-----+");
    System.out.println("|     |  A  |  B  |");
    System.out.println("+-----+-----+-----+");

    int rowNumber = 1;
    // The body
    for(String[] row : tableData)
    {
        // Numbers
        System.out.print("|  " + rowNumber + "  ");

        // Elements
        for(String element : row)
        {
            System.out.print("| " + element + " ");
        }

        // New line for the end of the row
        System.out.println("|");
        rowNumber++;
    }

    // Footer
    System.out.println("+-----+-----+-----+");

在这种情况下,我们不必计算我们需要多少间距和-因为我们已经知道数据的大小(正好是3个字符宽)。打印出来:

+-----+-----+-----+
|     |  A  |  B  |
+-----+-----+-----+
|  1  | abc | def |
|  2  | ghi | jkl |
+-----+-----+-----+

答案 1 :(得分:-1)

您需要将列字母转换为整数索引,以便将其用作二维数组的索引。可能还需要从行索引中减去1,以使另一个索引进入二维数组。