如何在java中读取Excel(.xlsx)文件?
从给定的如何在java中读取Excel(.xlsx)文件?,java,android,excel,apache-poi,Java,Android,Excel,Apache Poi,从给定的.xlsx文件中,我尝试使用Java读取数据 我读取该文件的代码如下: public static void main(String[] args) throws Exception { FileInputStream file = new FileInputStream(new File("E:\\test1.xlsx")); XSSFWorkbook workbook = new XSSFWorkbook(file); XSSFSh
.xlsx
文件中,我尝试使用Java读取数据
我读取该文件的代码如下:
public static void main(String[] args) throws Exception {
FileInputStream file = new FileInputStream(new File("E:\\test1.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet test = workbook.getSheetAt(0);
student emp = new student();
Iterator<Row> itr = test.iterator();
itr.next();
while(itr.hasNext()){
Row row = itr.next();
emp.reedData(row);
System.out.println(id+","+name+","+options);
}
void reedData(Row row){
id= row.getCell(0).toString();
name= row.getCell(1).toString();
options= row.getCell(2).toString();
}
但是,我得到的输出如下:
1.0,X,play game
,,sing song
2.0,Y,play game
,,sing song
1.0,X,{play game,sing song}
2.0,Y,{play game,sing song}
与上述内容不同,我希望输出如下所示:
1.0,X,play game
,,sing song
2.0,Y,play game
,,sing song
1.0,X,{play game,sing song}
2.0,Y,{play game,sing song}
这个问题是因为我正在合并.xlsx
文件中的两个单元格
有什么建议吗?
提前感谢您。看起来您正在使用Apache POI。 尝试将代码中的这两个单元格与以下内容合并:
test.addMergedRegion(1,2,0,0);
或:
我就是这样做的
import static java.lang.System.out;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class read {
public static void main(String [] args){
FileInputStream excelFile = new FileInputStream(new File(keep));
XSSFWorkbook wb = new XSSFWorkbook(excelFile);
XSSFSheet sheet = wb.getSheetAt(0);
int rowCount; // number of rows of newly form excel files
rowCount= sheet.getPhysicalNumberOfRows();
out.println(rowCount);
//trying to iterate the excel file
int i =0;
Iterator<Row> rowIterator = sheet.iterator();
do{
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext()) {
Cell cell = cellIterator.next();
if(cell.getColumnIndex()==0) { // to read the first column
DataFormatter df = new DataFormatter();
String str2 = df.formatCellValue(cell);
customerNo.add(str2);
}
}
++i;
if(i>rowCount)break;
//break;
}while(rowIterator.hasNext());
wb.close();
}
}
导入静态java.lang.System.out;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileOutputStream;
导入java.util.ArrayList;
导入java.util.Iterator;
导入org.apache.poi.hssf.usermodel.HSSFCell;
导入org.apache.poi.hssf.usermodel.HSSFCellStyle;
导入org.apache.poi.hssf.usermodel.HSSFRow;
导入org.apache.poi.hssf.usermodel.HSSFSheet;
导入org.apache.poi.hssf.usermodel.HSSFWorkbook;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.ss.usermodel.DataFormatter;
导入org.apache.poi.ss.usermodel.IndexedColors;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.xssf.usermodel.xssfheet;
导入org.apache.poi.xssf.usermodel.xssf工作簿;
公开课阅读{
公共静态void main(字符串[]args){
FileInputStream excelFile=新FileInputStream(新文件(保留));
XSSFWorkbook wb=新XSSFWorkbook(Excel文件);
XSSFSheet-sheet=wb.getSheetAt(0);
int rowCount;//新形成的excel文件的行数
rowCount=sheet.getPhysicalNumberOfRows();
out.println(行计数);
//正在尝试迭代excel文件
int i=0;
迭代器rowIterator=sheet.Iterator();
做{
行=行迭代器。下一步();
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext()){
Cell=cellIterator.next();
如果(cell.getColumnIndex()==0){//读取第一列
DataFormatter df=新的DataFormatter();
字符串str2=df.formatCellValue(单元格);
客户编号添加(str2);
}
}
++一,;
如果(i>行计数)中断;
//中断;
}while(roweiterator.hasNext());
wb.close();
}
}
希望这有帮助。对于其他列中的每一个多行,您都需要读取构成选项列的两行。