
嗨,
我正在尝试使用excel中的列标题来读取列值(使用java)。如图所示,假设我想读取标题"city",即该列下的所有后续单元格,并显示它们。我该怎么做呢?
通过互联网查看示例,我发现大多数示例都是使用迭代器在行上迭代的。
假设我有一个键的哈希图作为excel的头,随后的值存储在ArrayList中。就像这样
HashMap<String, ArrayList<String>> hashmap =
new HashMap<String, ArrayList<String>>();我应该如何继续?有人能帮我写代码和逻辑吗?
请不要将其标记为重复,我已经尝试过在stackoverflow和internet上搜索,但大多数都使用行进行迭代。
发布于 2016-09-30 23:29:07
首先,在获得所有列值后,您将读取第一行,下面我给出了如何读取第一行
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();
}
}也许它会对你有所帮助。
https://stackoverflow.com/questions/39794578
复制相似问题