使用Java汇总Excel列值
我需要根据找到的行数据汇总Excel列(1)的值 我的excel文件如下:使用Java汇总Excel列值,java,excel,Java,Excel,我需要根据找到的行数据汇总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]
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
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();
}
}
}
首先,我需要查看列(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)。
在某种程度上,我已经编写了代码。详情如下:
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
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.0300.0
400.0 我想得到两个十进制数字,并将这些值相加。我无法总结这些价值观 是这样吗
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();
}
}
}
import java.io.*;
导入java.util.*;
导入org.apache.poi.hssf.usermodel.*;
导入org.apache.poi.ss.usermodel.*;
公开课
{
公共静态双getsubstration(双求和,字符串)
{
如果(您的.contains(“-”))
{
返回main+Double.parseDouble(您的.replace(“-”,”);
}
else if(您的.contains(“+”))
{
返回main-Double.parseDouble(您的.replace(“+”,”);
}
其他的
{
返回main-Double.parseDouble(您的);
}
}
公共静态双getsum(双sub,字符串)
{
如果(您的.contains(“-”))
{
返回main-Double.parseDouble(您的.replace(“-”,”);
}
else if(您的.contains(“+”))
{
返回main+Double.parseDouble(您的.replace(“+”,”);
}
其他的
{
返回main+Double.parseDouble(你的);
}
}
公共静态void main(字符串[]args)
{
尝试
{
双重总和,分;
FileInputStream文件=新的FileInputStream(新文件(“C:/Users/Pradeep.HALCYONTEKDC/Desktop/19-04-2013.xls”);
HSSF工作簿=新的HSSF工作簿(文件);
HSSFSheet sheet=工作簿。getSheetAt(5);
迭代器rowIterator=sheet.Iterator();
while(roweiterator.hasNext())
{
行=行迭代器。下一步();
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext())
{
Cell=cellIterator.next();
字符串标记=cell.getStringCellValue().toString();
cell=row.getCell(0+1);
如果(单元格!=null)
如果(标记包含(“添加”))
{
字符串Tag1=cell.getStringCellValue().toString();
字符串[]s=Tag1.split(“”);
//System.out.println(s[1]);
如果(!s[1]。包含(“路径不存在”))
{
getSumm();
Float foo=Float.parseFloat(s[1].trim());
System.out.println(“1----”+foo);
对于(int i=0;i如果您想使用java操作excel数据,最好的选择是ApachePOI
官方网站上有很多教程,如果你在代码方面有帮助,你可以询问,我们会尽力帮助你
将这两个方法添加到代码中
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);
}
}
例如,定义两个全局变量double sum
和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);
}
}
}
公共类MainCreator{
公共静态void main(字符串[]args)引发IOException{
FileInputStream文件=新的FileInputStream(新文件(“workbook.xls”);
工作簿wb=新的HSSF工作簿(文件);
表sh=wb.getSheetAt(0);
int lastRownum=sh.getLastRowNum();
双总和=0;
双sub=0;
对于(int i=0;i
您可以将它们转换为int,因此我在代码中添加了一些更改将这两个方法添加到您的类中,第一个方法减法第二个是summ,如果y