Apache POI讀取和創建Excel ----01(簡單操作)
阿新 • • 發佈:2017-11-16
學習記錄 // HSSFSheet sheet=workbook.createSheet();
//在Excel工作薄建一工作表,其名為“測試”
XSSFSheet sheet=workbook.createSheet("測試");
//創建第一行
XSSFRow row =sheet.createRow(0);
// row.createCell(0).setCellValue("學員信息");
//合並單元格
// sheet.addMergedRegion(new CellRangeAddress(0,0,0,1));
//在索引0的位置創建行(第一行)
XSSFRow row1=sheet.createRow(0);
//在索引0的位置創建列(第一列)
XSSFCell cell=row1.createCell(0);//畫橫線是代表此方法已過時,不建議使用;
//定義單元格為字符串類型(Excel-設置單元格格式-數字-文本;不設置默認為“常規”,也可以設置成其他的,具體設置參考相關文檔)
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//在單元格內輸入一些內容
cell.setCellValue("姓名");
row1.createCell(1).setCellValue("年齡");
//創建第二行:
XSSFRow row2=sheet.createRow(1);
row2.createCell(0).setCellValue("張三");
row2.createCell(1).setCellValue(18);
//創建第三行:
XSSFRow row3=sheet.createRow(2);
row3.createCell(0).setCellValue("李四");
row3.createCell(1).setCellValue(20);
//新建一輸出文件流
FileOutputStream fout=new FileOutputStream(outputFile);
//把相應的Excel工作薄存盤
workbook.write(fout);
//flush();
//java在使用流時,都會有一個緩沖區,按一種它認為比較高效的方法來發數據:把要發的數據先放到緩沖區,緩沖區放滿以後再一次性發過去,而不是分開一次一次地發.
//而flush()表示強制將緩沖區中的數據發送出去,不必等到緩沖區滿.
//所以如果在用流的時候,沒有用flush()這個方法,很多情況下會出現流的另一邊讀不到數據的問題,特別是在數據特別小的情況下.
fout.flush();
//操作結束,關閉文件
fout.close();
System.out.println("文件生成");
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("已運行 xlCreate():"+e);
}
}
/**讀取Excel內容
* @throws FileNotFoundException */
public static void readExcel() throws FileNotFoundException{
FileInputStream file=new FileInputStream("D:\\test.xlsx");
try {
XSSFWorkbook workbook =new XSSFWorkbook(file);
XSSFSheet sheet=workbook.getSheet("測試");
XSSFRow row =sheet.getRow(0);
XSSFCell cell=row.getCell(0);
System.out.println(cell.getStringCellValue());
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("已運行 readExcel():"+e);
}
//把導入的內容存在集合中裏
List temp =new ArrayList();
try {
XSSFWorkbook workbook =new XSSFWorkbook(new FileInputStream("D:\\test.xlsx"));
XSSFSheet sheet=workbook.getSheet("測試");
for(Row r:sheet){
if(r.getRowNum()<1){
continue;
}
String name=r.getCell(0).getStringCellValue();
int age=(int) r.getCell(1).getNumericCellValue();
temp.add(name);
temp.add(age);
}
file.close();
//遍歷list temp
Iterator it = temp.iterator();
while(it.hasNext()) {
System.out.print(it.next()+" ");
}
System.out.println();
System.out.println("讀取完成");
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("已運行readExcel"+e);
}
}
public class ExcelCreatAndRead {
/**
* 使用Apache POI創建Excel文檔
* */
public static void createXL(){
/**Excel文件要存放的位置,假定在D盤下*/
String outputFile="D:\\test.xlsx";
try {
//創建新的Excel工作薄
XSSFWorkbook workbook =new XSSFWorkbook();
//在Excel工作薄建一工作表,其名為缺省值
//在Excel工作薄建一工作表,其名為“測試”
XSSFSheet sheet=workbook.createSheet("測試");
//創建第一行
XSSFRow row =sheet.createRow(0);
// row.createCell(0).setCellValue("學員信息");
//合並單元格
// sheet.addMergedRegion(new CellRangeAddress(0,0,0,1));
//在索引0的位置創建行(第一行)
XSSFRow row1=sheet.createRow(0);
//在索引0的位置創建列(第一列)
XSSFCell cell=row1.createCell(0);//畫橫線是代表此方法已過時,不建議使用;
//定義單元格為字符串類型(Excel-設置單元格格式-數字-文本;不設置默認為“常規”,也可以設置成其他的,具體設置參考相關文檔)
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//在單元格內輸入一些內容
row1.createCell(1).setCellValue("年齡");
//創建第二行:
XSSFRow row2=sheet.createRow(1);
row2.createCell(0).setCellValue("張三");
row2.createCell(1).setCellValue(18);
//創建第三行:
XSSFRow row3=sheet.createRow(2);
row3.createCell(0).setCellValue("李四");
row3.createCell(1).setCellValue(20);
//新建一輸出文件流
FileOutputStream fout=new FileOutputStream(outputFile);
//把相應的Excel工作薄存盤
workbook.write(fout);
//flush();
//java在使用流時,都會有一個緩沖區,按一種它認為比較高效的方法來發數據:把要發的數據先放到緩沖區,緩沖區放滿以後再一次性發過去,而不是分開一次一次地發.
//而flush()表示強制將緩沖區中的數據發送出去,不必等到緩沖區滿.
//所以如果在用流的時候,沒有用flush()這個方法,很多情況下會出現流的另一邊讀不到數據的問題,特別是在數據特別小的情況下.
fout.flush();
//操作結束,關閉文件
fout.close();
System.out.println("文件生成");
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("已運行 xlCreate():"+e);
}
}
/**讀取Excel內容
* @throws FileNotFoundException */
public static void readExcel() throws FileNotFoundException{
FileInputStream file=new FileInputStream("D:\\test.xlsx");
try {
XSSFWorkbook workbook =new XSSFWorkbook(file);
XSSFSheet sheet=workbook.getSheet("測試");
XSSFRow row =sheet.getRow(0);
XSSFCell cell=row.getCell(0);
System.out.println(cell.getStringCellValue());
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("已運行 readExcel():"+e);
}
//把導入的內容存在集合中裏
List temp =new ArrayList();
try {
XSSFWorkbook workbook =new XSSFWorkbook(new FileInputStream("D:\\test.xlsx"));
XSSFSheet sheet=workbook.getSheet("測試");
for(Row r:sheet){
if(r.getRowNum()<1){
continue;
}
String name=r.getCell(0).getStringCellValue();
int age=(int) r.getCell(1).getNumericCellValue();
temp.add(name);
temp.add(age);
}
file.close();
//遍歷list temp
Iterator it = temp.iterator();
while(it.hasNext()) {
System.out.print(it.next()+" ");
}
System.out.println();
System.out.println("讀取完成");
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("已運行readExcel"+e);
}
}
public static void main(String[] args) throws FileNotFoundException {
createXL();//創建Excel文檔
readExcel();//讀取Excel內容
}
}
Apache POI讀取和創建Excel ----01(簡單操作)