Java 从excel工作表中只读取几列
我正在编写一个Java程序,从Excel工作表中获取数据 通过下面的程序,我可以检索到整个数据Java 从excel工作表中只读取几列,java,excel,Java,Excel,我正在编写一个Java程序,从Excel工作表中获取数据 通过下面的程序,我可以检索到整个数据 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Iterator; import org.apache.poi.ss.formula.functions.Column; import org.apache.poi.ss.usermodel.Cell; i
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
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 ReadData {
@SuppressWarnings({ "resource", "null" })
public static void main(String[] args) throws IOException {
// get file
FileInputStream fin = new FileInputStream(
new File("C:\\A2015.xlsx"));
// create book holding object
XSSFWorkbook wb = new XSSFWorkbook(fin);
// get sheet
XSSFSheet sheet = wb.getSheetAt(0);
// iterate through rows
Iterator<Row> rowIt = sheet.rowIterator();
while (rowIt.hasNext()) {
XSSFRow row = (XSSFRow) rowIt.next();
// iterate through Columns
Iterator<Cell> colIt = row.cellIterator();
while (colIt.hasNext()) {
Cell cell = colIt.next();
System.out.println(cell.toString());
}
System.out.println();
}
}
}
但我的情况是,有将近45-47列,其中有一些数据不是我需要的,而是其他团队需要的。每一列都有一个标题,在这45-47列中,我只想从12列中提取数据,在Excel工作表的其余列之间随机放置数据
我的问题是,是否有一种方法可以遍历所有行并仅使用标题从这12列中获取数据,如果有,请告诉我如何提取它
我正在使用ApachePOI
谢谢您的意思是只获取与第1行定义的列标题相匹配的列吗?使用row.getCellint cellnum方法如何?这里有45-47列,是基于顶部定义的列标题的另一种类型,还是只需要使用列编号?因为我的列类似于AA、AB、AG、AH、AK、at,欧。我需要从这些列中检索文本为什么不迭代一次列名,存储所需列的索引,然后迭代行,从这些索引处的单元格获取值?
public static short getCellNum(String cellCode)throws InvalidNameException{
char[] cellCodeU = cellCode.toUpperCase().toCharArray();
int length = cellCodeU.length;
int cellNumber = 0;
for (int j=0;j<length;j++){
if (cellCodeU[j]<'A' || cellCodeU[j]>'Z')
throw new InvalidNameException("Wrong column index: " + cellCode);
cellNumber = cellNumber*CELL_NUMBER_IN_SHEET + (cellCodeU[j]-64);
}
cellNumber-=1;
if (cellNumber<0)
throw new InvalidNameException("Wrong column index: " + cellCode);
return (short)cellNumber;
}
String columnsToRead = new String[]{"AA", "AB", "AU"};
while (rowIt.hasNext()) {
XSSFRow row = (XSSFRow) rowIt.next();
for (int a = 0; a < columnsToRead.length; a++){
Cell cell = getCell(getCellNum(columnsToRead[a]));
System.out.println(cell.toString());
}
}