0

見つかった行データに基づいて Excel の列 (1) の値を合計する必要があります。

私のExcelファイルは次のとおりです。

                 column(0)                         column(1)
Row[0]    ECIN - INPUT VALUE (ADD)       NetTradeAllowanceAmount = -600.00
Row[1]    ECIN - INPUT VALUE (ADD)       CashDownPayment = 300.00
Row[2]    ECIN - INPUT VALUE (ADD)       OtherDownPaymentAmount = PATH DOES NOT EXIST
Row[3]    ECIN - INPUT VALUE (ADD)       CashDownPayment = 400.00
Row[4]    ECIN - INPUT VALUE (SUB)       OtherDownPaymentAmount = PATH DOES NOT EXIST
Row[5]    ECIN - INPUT VALUE (SUB)       ManufacturerRebateAmount = 500.00
Row[6]    ECIN - INPUT VALUE (SUB)       DeferredDownPaymentAmount = -700.00
Row[7]    ECIN - INPUT VALUE (SUB)       DeferredDownPaymentAmount = 900.00

まず、Column(0) のすべての行を確認する必要があります。

1.add the column(1) values having rows (ADD) data. (eg: SUM= 300.00 + 400.00 - 600.00  = 700.00 - 600.00 = 100.00)
2.add the column(1) values having rows (SUB) data. (eg: SUM=500.00 - 700.00 + 900.00 = 1400.00 - 700.00 = 700.00)
3.then subtract above two SUMs.                    (eg: 100.00 - 700.00 = 600.00)  

この結果を変数に保存し、この値を他のセルに記録する必要があります。

注: 行にデータ (SUB / ADD) がある場合でも、プログラムは値 = PATH DOES NOT EXIST を考慮しないでください。

ある程度、コードを書きました。それは次のとおりです。

import java.io.*;
import java.util.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
public class Hai
{
public static void main(String[] args)
{
    try 
    {
        FileInputStream file = new FileInputStream(new File("C:/Users/Excel.xls"));
        HSSFWorkbook workbook = new HSSFWorkbook(file);
        HSSFSheet sheet = workbook.getSheetAt(5);
        Iterator<Row> rowIterator = sheet.iterator();
        while(rowIterator.hasNext()) 
        {
            Row row = rowIterator.next();
            Iterator<Cell> cellIterator = row.cellIterator();
            while(cellIterator.hasNext())
            {
                    Cell cell = cellIterator.next();
                    String Tag=cell.getStringCellValue().toString();
                    cell = row.getCell(0+1);
                    if(cell !=null)
                    if(Tag.contains("ADD"))
                        {
                           String Tag1=cell.getStringCellValue().toString();
                           String[] s= Tag1.split("=");
                           //System.out.println(s[1]);
                           if(!s[1].contains("PATH DOES NOT EXIST"))
                           {
                             System.out.println(s[1].trim());
                           }
                        }
                    else if(Tag.contains("SUB"))
                        {
                           String Tag1=cell.getStringCellValue().toString();
                           String[] s= Tag1.split("=");
                           if(!s[1].contains("PATH DOES NOT EXIST"))
                           {
                             System.out.println(s[1].trim());
                           }
                        }
            }
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }   
}
}

私が得ている出力は次のとおりです。

-600.00
300.00
400.00
500.00
-700.00
900.00

上記の値は文字列形式です。これらの値を合計したいと思います。私を助けてください!

上記の値を次のように Flatot に変換しました。

Float foo = Float.parseFloat(s[1].trim());

私が得た出力は次のとおりです。

-600.0
300.0
400.0

2 桁の 10 進数を取得し、これらの値を合計したいと考えています。値を合計できませんでした。

こんな感じですか

import java.io.*;
import java.util.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
 public class Hai
{
public static double getSubstraction(double summ, String your)
{
    if (your.contains("-"))
    {
        return main + Double.parseDouble(your.replace("-", ""));
    } 
    else if (your.contains("+"))
    {
        return main - Double.parseDouble(your.replace("+", ""));
    } 
    else 
    {
        return main - Double.parseDouble(your);
    }

}
 public static double getSumm(double sub, String your) 
    {
        if (your.contains("-")) 
        {
            return main - Double.parseDouble(your.replace("-", ""));
        } 
        else if (your.contains("+")) 
        {
            return main + Double.parseDouble(your.replace("+", ""));
        } 
        else 
        {
            return main + Double.parseDouble(your);
        }
    }
public static void main(String[] args)
{
    try 
    {
        double summ, sub;
        FileInputStream file = new FileInputStream(new File("C:/Users/Pradeep.HALCYONTEKDC/Desktop/19-04-2013.xls"));
        HSSFWorkbook workbook = new HSSFWorkbook(file);
        HSSFSheet sheet = workbook.getSheetAt(5);
        Iterator<Row> rowIterator = sheet.iterator();
        while(rowIterator.hasNext()) 
        {
            Row row = rowIterator.next();
            Iterator<Cell> cellIterator = row.cellIterator();
            while(cellIterator.hasNext())
            {
                    Cell cell = cellIterator.next();
                    String Tag=cell.getStringCellValue().toString();
                    cell = row.getCell(0+1);
                    if(cell !=null)
                    if(Tag.contains("ADD"))
                        {
                           String Tag1=cell.getStringCellValue().toString();
                           String[] s= Tag1.split("=");
                           //System.out.println(s[1]);
                           if(!s[1].contains("PATH DOES NOT EXIST"))
                           {
                               getSumm() ;
                             Float foo = Float.parseFloat(s[1].trim());
                             System.out.println("1----  "+foo);
                             for(int i=0; i<5;i++)
                             {
                                 foo+=foo;
                                 //System.out.println(foo);
                             }
                           }
                        }
                    else if(Tag.contains("SUB"))
                        {
                           String Tag1=cell.getStringCellValue().toString();
                           String[] s= Tag1.split("=");
                           if(!s[1].contains("PATH DOES NOT EXIST"))
                           {
                               getSubstraction();
                             System.out.println(s[1].trim());
                           }
                        }


            }
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }   
}
}

これで私を助けてください。

4

1 に答える 1

1

Java を使用して Excel データを操作する場合、私にとって最良の選択肢は apache POI でした。公式サイトにはたくさんのチュートリアルがあります。

この 2 つのメソッドをコードに追加します

private static double getSubstraction(double summ, String your) {
    if (your.contains("-")) {
        return summ + Double.parseDouble(your.replace("-", ""));
    } else if (your.contains("+")) {
        return summ - Double.parseDouble(your.replace("+", ""));
    } else {
        return summ  - Double.parseDouble(your);
    }

}

private static double getSumm(double sub, String your) {
    if (your.contains("-")) {
        return sub - Double.parseDouble(your.replace("-", ""));
    } else if (your.contains("+")) {
        return sub  + Double.parseDouble(your.replace("+", ""));
    } else {
        return sub + Double.parseDouble(your);
    }
}

2 つのグローバル変数double summを定義しdouble sub、たとえば

public class MainCreator {

    public static void main(String[] args) throws IOException {
        FileInputStream file = new FileInputStream(new File("workbook.xls"));
        Workbook wb = new HSSFWorkbook(file);
        Sheet sh = wb.getSheetAt(0);
        int lastRownum = sh.getLastRowNum();
        double summ = 0;
        double sub = 0;

        for (int i = 0; i < lastRownum + 1; i++) {
            Row row = sh.getRow(i);

            Cell cell1 = row.getCell(1);
            Cell cell2 = row.getCell(2);

            if (cell1 != null && cell2 != null) {
                String cellValue1 = cell1.getStringCellValue();
                String cellValue2 = cell2.getStringCellValue();

                String stringNumber = cellValue2.split("=")[1].trim();
                if (cellValue1.contains("ADD")) {
                    if (cellValue2.split("=")[1].trim().contains("PATH DOES NOT EXIST")) {
                        System.out.println("Path Does Not Exist");
                    } else {
                        System.out.println(cellValue1 + "/" + stringNumber);
                        summ = getSumm(summ, stringNumber);
                    }

                } else if (cellValue1.contains("SUB")) {
                    if (cellValue2.split("=")[1].trim().contains("PATH DOES NOT EXIST")) {
                        System.out.println("Path Does Not Exist");
                    } else {
                        System.out.println(cellValue1 + "/" + stringNumber);
                        sub = getSubstraction(sub, stringNumber);
                    }
                } else {
                    System.out.println("Smt wrong");
                }
            }
        }
        System.out.println("Summ = " + summ);
        System.out.println("Sub = " + sub);
    }

    private static double getSubstraction(double main, String your) {
        if (your.contains("-")) {
            return main + Double.parseDouble(your.replace("-", ""));
        } else if (your.contains("+")) {
            return main - Double.parseDouble(your.replace("+", ""));
        } else {
            return main - Double.parseDouble(your);
        }
    }

    private static double getSumm(double main, String your) {
        if (your.contains("-")) {
            return main - Double.parseDouble(your.replace("-", ""));
        } else if (your.contains("+")) {
            return main + Double.parseDouble(your.replace("+", ""));
        } else {
            return main + Double.parseDouble(your);
        }
    }
}
于 2013-04-18T15:45:35.827 に答える