您好,
我正在尝试使用excel中的列标题读取列值(使用java)。如图所示,假设我想读取标题“city”,列下的所有后续单元格并显示它们。我该怎么做?
通过互联网查看示例,我发现大多数示例都在行上使用迭代器进行迭代。
假设我有一个key的hashmap作为excel的头文件和存储在ArrayList中的后续值。像
这样的东西HashMap<String, ArrayList<String>> hashmap =
new HashMap<String, ArrayList<String>>();
我该怎么办?任何人都可以帮我解决代码和逻辑问题吗?
请不要将此标记为重复,我已尝试搜索stackoverflow和Internet,但大多数都使用该行进行迭代。
答案 0 :(得分:1)
没有办法直接读取列中的所有单元格而不迭代行,因为这是数据存储在Excel工作表中的方式(行,而不是列)。解决方法可能是移动行和列,就像显示here一样,然后迭代行,以便按照问题中的说明在Hashmap
中获取数据。
答案 1 :(得分:0)
首先,您将在获得所有列值后阅读第1行,下面我已经给出了如何阅读第一行
public void readFirstRow(String filename)
{
List<String> fieldsArrayList = new ArrayList<String>();
try{
FileInputStream myInput = new FileInputStream(new File(filename));
Workbook workBook = null;
workBook = new HSSFWorkbook(myInput);
Sheet sheet = workBook.getSheetAt(0);
Row firstRow = sheet.getRow(0);
int length = firstRow.getLastCellNum();
Cell cell = null;
for( int i = 0 ; i < length ; i++ )
{
cell = firstRow.getCell(i);
fieldsArrayList.add(cell.toString());
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
读取列值代码:
//您只需传递cityPostion和文件名
public void readColumnValues(int cityPosition,String fileName)
{
try
{
FileInputStream myInput = new FileInputStream(fileName);
Workbook workBook = null;
workBook = new HSSFWorkbook(myInput);
Sheet sheet = workBook.getSheetAt(0);
for ( int i = 0 ; i <= sheet.getLastRowNum() ; i++ )
{
Row row = sheet.getRow(i);
if (i > 0) //skip first row
{
Cell cityCell = row.getCell(cityPosition);
String cityNames = cityCell.toString();
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
可能会对你有所帮助......