【问题标题】:How to print the contents of stringbuilder in each line in a output text file in java如何在java中的输出文本文件的每一行中打印stringbuilder的内容
【发布时间】:2018-02-15 15:34:34
【问题描述】:

我正在处理一个很大的 excel 文件,我必须使用 apache 事件库来解析它。所以现在我能够以某种方式获取每个单元格的每个单元格的值和内容,并将它们存储在一个Struingbuilder.所以现在我的目标是以这样的方式生成文本文件,以便每一行和每一列都看起来像源 excel 文件。我给出了excel文件结构的图片。

XXXXXX  XXXXXXXXXXXX  XXXXXXXX  XXXXXXXXXXX  XXXXXXXXX
1         DDD          FFFFFF   KKKK            LLLL
2          KKK          FFFFF   KKK             LLLL
.............................
9          KKK          HHH     LL                JJJ

所以我得到的文件内容为

public void endElement(String uri, String localName, String name)
            throws SAXException {
        StringBuilder row = new StringBuilder();
        // Process the last contents as required.
        // Do now, as characters() may be called more than once
        if(nextIsString) {
            int idx = Integer.parseInt(lastContents);

            lastContents = new XSSFRichTextString(sst.getEntryAt(idx)).toString();
            nextIsString = false;
        }

        // v => contents of a cell
        // Output after we've seen the string contents
        if(name.equals("v")) {
            //System.out.println(lastContents);

            if(!lastContents.isEmpty() )
            row.append(lastContents);

            /*if(lastContents == null) {
                row.append("");
            }else {
                row.append(SEPARATOR);
            }*/

            aMethodToParseRow(row);
            try {
                FileUtils.write(new File("D:\\BM_Amortization_.txt"), formatListToString(pickUpExcelValues));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    private void aMethodToParseRow(StringBuilder row) {
        StringBuilder sb =  new StringBuilder();
        StringBuilder sb1 =  new StringBuilder();int count =0;
        if(!(row.toString().equals("Loan details") || row.toString().equals("Fixed") || row.toString().equals("3m")|| row.toString().equals("ACT/364")||row.toString().equals("Amounts * EUR 1")||row.toString().equals("Floating") ||row.toString().equals("ACT/365")||row.toString().equals("43100")||row.toString().toString().equals("6m")||row.toString().toString().equals("ACT/ACT")||row.toString().equals("General information")||row.toString().equals("FA - Reporting")||row.toString().equals("Solvency II Reporting")||row.toString().equals("1y")||row.toString().equals("30/360") )) {
            count++;
            if(count>0 && count<24)
            sb.append(row.toString());
            System.out.println(sb.toString());
        }
        count=0;
    }

所以该文件包含 24 列,所以我可以有一个代码,将每个单元格内容放在Stringbuilder 中的 24 索引之后的新行吗? 就像 Stringbuilder 包含所有 hedaers 和数据一样,从一开始,当它到达 Stringbuilder 中的第 24 个数字时,它将用分隔符将值分成一个新行。

【问题讨论】:

  • 任何人的想法??

标签: java excel string stringbuilder


【解决方案1】:

我不同意您在 StringBuilder 中转储的方法,但如果您被限制使用 String builder,那么您可以采用这种方法。保存用逗号分隔的每个行单元格,下一行用“|”分隔。

然后在“|”上使用字符串标记器所以你有你的个人行,然后在循环中再次在“,”上使用标记器来获取单元格值。 前

StringBuilder sample = new StringBuilder();
sample.append("DDD,FFFFFF,KKKK,LLLL).append("|")
       .append("KKK,FFFFF,KKK,LLLL");

现在只需使用 StringTokenizer 并转储文件中的每一行

【讨论】:

  • 但我还必须通过一定的数字让我们说 24 然后我必须再次追加。我该怎么做?
  • 在您的代码中执行此操作 - if(count>0 && count
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
相关资源
最近更新 更多