关于我以前的问题,如何使用Java计算Excel文档的一列中的行数,我能够计算给定工作表中的总列数。现在,
由于我想计算特定列中的行数,因此尚需
完成一半的工作。可能的解决方案是使用2d数组并存储列索引和总行数或使用map等。我如何实现这一目标?这里提供了Java代码。我的演示文件计数正确(列计数)。请根据需要修改/建议更改。
(编辑):我已经用hasp映射来计算存储列索引作为键,行计数作为值,但是它没有用,可能是应用的逻辑错误。好吧,如果我想通过使用 Hash Map
完成此操作, 如何将行数存储在特定列中(同时进行迭代) 作为 值
Java代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import org.apache.poi.ss.formula.functions.Column;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelRead {
static int colrange=1000;
public static void main(String[] args) {
HashMap hm=new HashMap();
int count=0;
try {
FileInputStream file = new FileInputStream(new File("C:/Users/vinayakp/Desktop/Demo2.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch(cell.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
System.out.print(cell.getBooleanCellValue() + "\t\t");
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t\t");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + "\t\t");
break;
}
}
System.out.println("");
}
for(Row r:sheet)
{
short minColIx=r.getFirstCellNum();
short maxColIx=r.getLastCellNum();
for(short colIx=minColIx;colIx<maxColIx;colIx++) {
Cell c= r.getCell(colIx);
if(c!=null) {
if(c.getCellType()== Cell.CELL_TYPE_STRING||c.getCellType() == Cell.CELL_TYPE_NUMERIC||c.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
count++; ---// can i use hashcode in here to get the key and value pair? key=column index value=total number of rows in that column
}
}
else break;
}
}
System.out.println("\nTotal Number of columns are:\t"+count);
System.out.println(hm);
file.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException ae) {
ae.printStackTrace();
}
}
}
试试这个:
private void excelReader() {
String data;
try {
InputStream is = new FileInputStream("Read.xlsx");
Workbook wb = WorkbookFactory.create(is);
Sheet sheet = wb.getSheetAt(0);
Iterator rowIter = sheet.rowIterator();
Row r = (Row)rowIter.next();
short lastCellNum = r.getLastCellNum();
int[] dataCount = new int[lastCellNum];
int col = 0;
rowIter = sheet.rowIterator();
while(rowIter.hasNext()) {
Iterator cellIter = ((Row)rowIter.next()).cellIterator();
while(cellIter.hasNext()) {
Cell cell = (Cell)cellIter.next();
col = cell.getColumnIndex();
dataCount[col] += 1;
DataFormatter df = new DataFormatter();
data = df.formatCellValue(cell);
System.out.println("Data: " + data);
}
}
is.close();
for(int x = 0; x < dataCount.length; x++) {
System.out.println("col " + x + ": " + dataCount[x]);
}
}
catch(Exception e) {
e.printStackTrace();
return;
}
}
我使用以下单元格数据创建了一个xlsx文件:
Col0 Col1 Col2 Col3 Col4
1 a x a q
2 b y s w
3 c z d e
4 d f r
5 e t
y
dataCount数组的内容是这样的:
列0:6
1:6
第2列:4
col 3:5
第4列:7
右边的数字计算每列(包括标题行)中包含数据的单元格的数量。
如果要排除标题行,只需删除以下行:
rowIter = sheet.rowIterator();
在while循环之前。
这是你想要的?
问题内容: 我有一个Java代码,可从excel文档中获取数据。我想计算列数和行总数(在特定列中)。我该如何实现?下面提供了Java代码和所需的o / p (编辑):我应该进行哪些修改以获得所需的O / P,例如,我应该编写一个循环以获取列和行的计数,或者有一种方法可以做到这一点 所需的O / P (编辑):-在这里回答-计算Excel工作表一列中的行数(提供Java代码) 我的Java代码: 我
我正在处理一个Excel工作簿,我希望工作簿为每一行新数据创建一个新工作表。下面的代码确实可以做到这一点,但问题是Excel使用每一行第一列中的文本作为新工作表的名称。我想更改它并使另一列成为新工作表名称的来源。请告知我需要更改哪一行才能完成此操作。谢谢您的帮助!
我有一个静态网站的形式,我托管在netlify。使用netlify to sheets zap,当表单提交到站点上时,数据会按预期在我的工作表中显示为一行。 在插入后添加最后一行。我想做一些应用程序脚本后处理,我使用onchange事件触发它。在进行后期处理之前,我希望填写一些表单未提交的空白单元格,例如日期字段和合计字段。它将price单元格移到左边,并添加1500。 我最初想用一个公式: 把这
问题内容: 新版本的Pandas使用以下界面加载Excel文件: 但是,如果我不知道可用的图纸怎么办? 例如,我正在使用以下工作表的excel文件 数据1,数据2 …,数据N,foo,bar 但我不知道先验。 有什么方法可以从Pandas的Excel文档中获取工作表列表吗? 问题答案: 您仍然可以使用ExcelFile类(和属性): 有关更多选项, 请参阅文档以进行解析…
问题内容: 蟒蛇 我有一个清单清单。喜欢 我想计算每个列表在主列表中出现了多少次。 我的输出应该像 问题答案: 只需使用来自:
我在Jasper Report中的excel导出时遇到问题。我的报告的输出excel文件有不需要的合并单元格,具体取决于我为每个报告使用的报告模板。我在第一个excel表中显示报告模板,在第二个excel表中显示“列标题”和“数据”。我试图做的是忽略第二个表中的合并单元格。我使用 属性创建第二张图纸。 我不允许更改模板,所以我应该找到一种方法来忽略第二张表中的合并单元格,这是我的excel文件的屏