我搜索了StackOverflow,但没有找到我的问题的明确答案。
我有一个简单的2列和24行xlsx(excel)文件(稍后这个文件将有更多的列和行,最终它将有不同的表)。
第一行是标题行:year = x和population = y,对于每个标题,我想读取下面的行。后来我希望能够使用这些信息来创建动态图(x,y),
所以我认为我需要在变量中保存x和y信息。下面是我的伪代码。
//Sheet Pop
final String POP = "Pop";
int startRowHeader = 1,
startRowNumeric = 2,
startColNumeric = 1,
nrOfCols = 0,
nrOfRows = 0;
int nrOfSheets = excelFile.getWorkbook().getNumberOfSheets();
org.apache.poi.ss.usermodel.Sheet sheet1 = excelFile.getWorkbook().getSheetAt(0);
String[] sheets = {POP};
boolean sheetExists;
String activeSheet = "";
nrOfCols = sheet1.getRow(0).getLastCellNum();
nrOfRows = excelFile.getLastRowNum(POP);
try {
for (String sheet : sheets) {
sheetExists = false;
for (int sheetIndex = 0; sheetIndex < nrOfSheets; sheetIndex++) {
if (sheet.equalsIgnoreCase( excelFile.getWorkbook().getSheetName(sheetIndex))) {
SheetExists = true;
}
}
if (!sheetExists) {
throw new Exception("Sheet " + sheet + " is missing!");
}
}
//Take off!
// Sheet Pop
activeSheet = sheets[0];
for(int j=0; j < nrOfCols; j++) {
for(int i=0; i<nrofRows; i++) {
column[i] = (int)excelFile.getCellNumericValue(POP, startRowNumeric, startColNumeric);
}
}
} catch (Exception e) {
traceln(" ..... ");
traceln("Error in sheet: " + activeSheet);
traceln("Message: " + e.getMessage()); //Write out in console
}
答案 0 :(得分:1)
创建一个新类:
public class Point {
int x;
int y;
}
在你的main函数中创建一个
List<Point> allPoints = new List<Point>();
然后将您从excel读取的点添加到此列表
在循环中执行此操作
Point p = new Point();
p.x = xCoordinateFromExcel;
p.y = yCoordinateFromExcel;
allPoints.add(p);
还考虑将构造函数和getter / setter添加到Point类中。
您也可以直接使用java.awt中提供的Point类。 http://docs.oracle.com/javase/7/docs/api/java/awt/Point.html
编辑:关于从excel获取值 这是我从你的问题中理解的 你有24行2列 第一列有x,第二列有y值
所以你可以在循环中做这样的事情
for(int i=0;i<24;i++){
Row row = sheet.getRow(i);
Cell cellX = row.getCell(1);
Cell cellY = row.getCell(2);
//assign to point class
...
}
别忘了将其解析为int,或者使用getNumericCellValue() http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Cell.html#getNumericCellValue()