我正在尝试使用POI Apache从Excel表中读取数据。我遇到的问题是,我想同时读取一行中所有单元格的数据,并将其存储在类类型的ArrayList中,但输出只是一个单元格接一个单元格。
下面是打开excel表并逐单元读取数据的类。
package testing;
import javax.swing.JFileChooser;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadExcelDemo
{
ArrayList<Data> list = new ArrayList<>();
String path;
public ReadExcelDemo(String path)
{
this.path = path;
try
{
FileInputStream file = new FileInputStream(new File(path));
//Create Workbook instance holding reference to .xlsx file
XSSFWorkbook workbook = new XSSFWorkbook(file);
//Get first/desired sheet from the workbook
XSSFSheet sheet = workbook.getSheetAt(0);
System.out.println("");
//Iterate through each rows one by one
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext())
{
Row row = rowIterator.next();
//For each row, iterate through all the columns
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
//Check the cell type and format accordingly
switch (cell.getCellType())
{
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + "\t");
break;
}
}
System.out.println("");
}
file.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
数据类
package testing;
public class Data {
int ID;
String F_Name,L_Name;
public Data(int ID, String F_Name, String L_Name) {
this.ID = ID;
this.F_Name = F_Name;
this.L_Name = L_Name;
}
public int getID() {
return ID;
}
public String getF_Name() {
return F_Name;
}
public String getL_Name() {
return L_Name;
}
List.add(new Data(1,"Amit","shukla"));
this.path=路径;
try
{
FileInputStream file = new FileInputStreaHashMap<K, V>ile(path));
HashMap<Integer, Data> mp= new HashMap<Integer, Data>();
//Create Workbook instance holding reference to .xlsx file
XSSFWorkbook workbook = new XSSFWorkbook(file);
//Get first/desired sheet from the workbook
XSSFSheet sheet = workbook.getSheetAt(0);
System.out.println("");
//Iterate through each rows one by one
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext())
{
Row row = rowIterator.next();
//For each row, iterate through all the columns
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
//Check the cell type and format accordingly
int i=0;
int j=0;
switch (cell.getCellType())
{
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t");
i=Integer.parseInt(cell.getNumericCellValue());
Data d= new Data();
d.setId(cell.getNumericCellvalue());
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + "\t");
if( j==0){
Data data= mp.get(i);
data.setName(cell.getStringCellValue());
mp.put(i, data);
j=j+1;
}
else
{
Data data= mp.get(i);
data.setLastName(cell.getStringCellValue());
mp.put(i, data);
j=0;
}
break;
}
}
System.out.println("");
}
List<Data> dataList= new ArrayList<Data>();
for (Data d : mp.values()) {
dataList.add(d);
}
file.close();
}
catch (Exception e)
{
e.printStackTrace();
}
问题内容: 我正在使用POI HSSF读取excel数据,并且正在使用JUnit根据数据库proc RefCursor检查数据。 将来自Refcursor的数字数据(例如100)与excel工作表100中的数据进行比较时,Junit测试失败,但由于POI将其读取为100.0,因此Junit测试失败。 这是我正在构建的通用框架程序,因此该框架应该足够智能以忽略“ .0”。关于如何解决这个问题的任何投
我有Excel表格,在不同的单元格中有用户名、电子邮件ID、电话和位置。我已将所有单元格值添加到Arraylist中。然而,现在我需要遍历索引,每次读取用户名并将其传递给其他应用程序中的文本框。 我写了代码,直到添加到ArrayList,但不确定如何每次都从列表中读取每个值,并停留在这里。 意味着,第一次我应该读取用户名为“A”,电子邮件ID为“a.b@c.com”,电话号码为“12333”,位置
本文向大家介绍Python pandas如何向excel添加数据,包括了Python pandas如何向excel添加数据的使用技巧和注意事项,需要的朋友参考一下 pandas读取、写入csv数据非常方便,但是有时希望通过excel画个简单的图表看一下数据质量、变化趋势并保存,这时候csv格式的数据就略显不便,因此尝试直接将数据写入excel文件。 pandas可以写入一个或者工作簿,两种方法介绍
我正在使用Maven创建一个Selenium项目,其中我试图从Excel文件(xlsx)中读取“username”和“password”。 这是密码- 我得到的错误在这一行: Driver.FindElement(By.XPath(“//input[@type='text']”)).SendKeys(Sheet.GetRow(i).GetCell(j).GetStringCellValue());
客观的 阅读通过Avassetrader从iTunes商店购买的文件。通过传输,并被使用。 我所尝试的 据我所知,只生成音频原始数据,所以我想我应该在每个样本前面添加ADTS标头。 所以,我的问题是,如何循环每个样本并添加ADTS头?
嗨, 我正在尝试使用excel中的列标题读取列值(使用java)。如图中所示,假设我想读取标题“城市”、列下的所有后续单元格并显示它们。我该怎么做? 通过查看internet上的示例,我发现大多数示例都使用迭代器在行上迭代。 请不要将此标记为重复,我已经尝试在stackoverflow和internet上搜索,但大多数都使用行迭代。