<div class="cnblogs_code">
terator; <span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.hssf.usermodel.hssfCell;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.hssf.usermodel.hssfRow;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.hssf.usermodel.hssfSheet;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.hssf.usermodel.hssfWorkbook;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.xssf.usermodel.XSSFCell;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.xssf.usermodel.XSSFRow;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.xssf.usermodel.XSSFSheet;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.xssf.usermodel.XSSFWorkbook; <span style="color: #0000ff;">import<span style="color: #000000;"> java.lang.reflect.Field;
<span style="color: #0000ff;">import<span style="color: #000000;"> java.lang.reflect.InvocationTargetException;
<span style="color: #0000ff;">import<span style="color: #000000;"> java.lang.reflect.Method;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.slf4j.Logger;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.slf4j.LoggerFactory;<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> ReadWriteExcelFile {
<span style="color: #0000ff;">private <span style="color: #0000ff;">static Properties props = <span style="color: #0000ff;">new<span style="color: #000000;"> Properties();
<span style="color: #0000ff;">static<span style="color: #000000;"> {
<span style="color: #0000ff;">try<span style="color: #000000;"> {
InputStream is = ReadWriteExcelFile.<span style="color: #0000ff;">class.getClassLoader().getResourceAsstream("meta-inf/ExcelHeader.properties"<span style="color: #000000;">);
props.load(is);
} <span style="color: #0000ff;">catch<span style="color: #000000;"> (Exception e) {
e.printstacktrace();
}
}
<span style="color: #0000ff;">public <span style="color: #0000ff;">static<span style="color: #000000;"> String getValue(String key) {
String value = ""<span style="color: #000000;">;
<span style="color: #0000ff;">if<span style="color: #000000;"> (props.containsKey(key)) {
value = props.getProperty(key,""<span style="color: #000000;">);
}
<span style="color: #0000ff;">return<span style="color: #000000;"> value;
}
<span style="color: #0000ff;">private <span style="color: #0000ff;">final <span style="color: #0000ff;">static Logger logger = LoggerFactory.getLogger(ReadWriteExcelFile.<span style="color: #0000ff;">class<span style="color: #000000;">);
@SuppressWarnings({ "resource","rawtypes"<span style="color: #000000;"> })
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void readXLSFile() <span style="color: #0000ff;">throws<span style="color: #000000;"> IOException
{
InputStream ExcelFiletoRead = <span style="color: #0000ff;">new FileInputStream("E:/source/Test.xls"<span style="color: #000000;">);
hssfWorkbook wb = <span style="color: #0000ff;">new<span style="color: #000000;"> hssfWorkbook(ExcelFiletoRead);<a href="https://www.jb51.cc/tag/hssf/" target="_blank" class="keywords">hssf</a>Sheet sheet</span>=wb.getSheetAt(0<span style="color: #000000;">); <a href="https://www.jb51.cc/tag/hssf/" target="_blank" class="keywords">hssf</a>Row row; <a href="https://www.jb51.cc/tag/hssf/" target="_blank" class="keywords">hssf</a>Cell cell; I<a href="https://www.jb51.cc/tag/tera/" target="_blank" class="keywords">tera</a>tor rows </span>=<span style="color: #000000;"> sheet.rowI<a href="https://www.jb51.cc/tag/tera/" target="_blank" class="keywords">tera</a>tor(); </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (rows.hasNext()) { row</span>=<span style="color: #000000;">(<a href="https://www.jb51.cc/tag/hssf/" target="_blank" class="keywords">hssf</a>Row) rows.next(); I<a href="https://www.jb51.cc/tag/tera/" target="_blank" class="keywords">tera</a>tor cells </span>=<span style="color: #000000;"> row.cellI<a href="https://www.jb51.cc/tag/tera/" target="_blank" class="keywords">tera</a>tor(); </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (cells.hasNext()) { cell</span>=<span style="color: #000000;">(<a href="https://www.jb51.cc/tag/hssf/" target="_blank" class="keywords">hssf</a>Cell) cells.next(); </span><span style="color: #0000ff;">if</span> (cell.getCellType() ==<span style="color: #000000;"> <a href="https://www.jb51.cc/tag/hssf/" target="_blank" class="keywords">hssf</a>Cell.CELL_TYPE_STRING) { Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.print(cell.getStringCellValue()</span>+" "<span style="color: #000000;">); } </span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span>(cell.getCellType() ==<span style="color: #000000;"> <a href="https://www.jb51.cc/tag/hssf/" target="_blank" class="keywords">hssf</a>Cell.CELL_TYPE_NUMERIC) { Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.print(cell.getNumericCellValue()</span>+" "<span style="color: #000000;">); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #008000;">//</span><span style="color: #008000;">U Can Handel Boolean,Formula,Errors</span>
<span style="color: #000000;"> }
}
System.out.println();
}} </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> writeXLSFile(List<? <span style="color: #0000ff;">extends</span> Recording> records) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> IOException{ </span><span style="color: #008000;">//</span><span style="color: #008000;">String directory=getValue("excel.file.directory");</span> String directory="E:/source"<span style="color: #000000;">; Date d </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> Date(); SimpleDateFormat sdf </span>= <span style="color: #0000ff;">new</span> SimpleDateFormat("yyyy-MM-dd"<span style="color: #000000;">); String date </span>=<span style="color: #000000;"> sdf.format(d); Recording record</span>=records.get(0<span style="color: #000000;">); Class</span><? <span style="color: #0000ff;">extends</span> Recording> cls=<span style="color: #000000;">record.getClass(); String className</span>=<span style="color: #000000;">cls.getCanonicalName(); String[] nameAlias</span>=className.split("\\."<span style="color: #000000;">); String excelFileName</span>=directory+File.sep<a href="https://www.jb51.cc/tag/ara/" target="_blank" class="keywords">ara</a>tor+nameAlias[nameAlias.length-1]+date+".xls"<span style="color: #000000;">; writeXLSFile(records,excelFileName); } @SuppressWarnings(</span>"resource"<span style="color: #000000;">) </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> writeXLSFile(List<? <span style="color: #0000ff;">extends</span> Recording> records,String excelFileName) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> IOException{ </span><span style="color: #008000;">//</span><span style="color: #008000;">String excelFileName = "E:/source/Test.xls";</span> String sheetName = "Sheet1";<span style="color: #008000;">//</span><span style="color: #008000;">name of sheet</span>
<span style="color: #000000;">
hssfWorkbook wb = <span style="color: #0000ff;">new<span style="color: #000000;"> hssfWorkbook();
hssfSheet sheet =<span style="color: #000000;"> wb.createSheet(sheetName) ;
Recording record;
<span style="color: #008000;">//<span style="color: #008000;">excel header
hssfRow row = sheet.createRow(0<span style="color: #000000;">);
record=records.get(0<span style="color: #000000;">);
Class<? <span style="color: #0000ff;">extends Recording> cls=<span style="color: #000000;">record.getClass();
String className=<span style="color: #000000;">cls.getCanonicalName();
String[] nameAlias=className.split("\."<span style="color: #000000;">);
Field[] fields=<span style="color: #000000;">cls.getDeclaredFields();
<span style="color: #008000;">//<span style="color: #008000;">去除serialVersionUID列,
ListfieldsNoSer=<span style="color: #0000ff;">new ArrayList <span style="color: #000000;">();
<span style="color: #0000ff;">for(<span style="color: #0000ff;">int i=0;i<fields.length;i++<span style="color: #000000;">){
String fieldName=<span style="color: #000000;">fields[i].getName();
<span style="color: #0000ff;">if(fieldName.equalsIgnoreCase("serialVersionUID"<span style="color: #000000;">)){
<span style="color: #0000ff;">continue<span style="color: #000000;">;
}<span style="color: #0000ff;">else<span style="color: #000000;">{
fieldsNoSer.add(fields[i]);
}
}
<span style="color: #0000ff;">for(<span style="color: #0000ff;">int i=0;i<fieldsNoSer.size();i++<span style="color: #000000;">){
hssfCell cell =<span style="color: #000000;"> row.createCell(i);
String fieldName=<span style="color: #000000;">fieldsNoSer.get(i).getName();
cell.setCellValue(getValue(nameAlias[nameAlias.length-1]+"."+<span style="color: #000000;">fieldName));
}</span><span style="color: #008000;">//</span><span style="color: #008000;">ite<a href="https://www.jb51.cc/tag/rating/" target="_blank" class="keywords">rating</a> r number of rows</span> <span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> r=0;r < records.size(); r++<span style="color: #000000;"> ) { row </span>= sheet.createRow(r+1<span style="color: #000000;">); record</span>=<span style="color: #000000;">records.get(r); </span><span style="color: #008000;">//</span><span style="color: #008000;">table content</span> <span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> c=0;c < fieldsNoSer.size(); c++<span style="color: #000000;"> ) { <a href="https://www.jb51.cc/tag/hssf/" target="_blank" class="keywords">hssf</a>Cell cell </span>=<span style="color: #000000;"> row.createCell(c); </span><span style="color: #008000;">//</span><span style="color: #008000;">加header,<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>总变量的首字母大写</span> String fieldName=<span style="color: #000000;">fieldsNoSer.get(c).getName(); </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> { Method method</span>=cls.getDeclaredMethod("get"+fieldName.substring(0,1).<a href="https://www.jb51.cc/tag/toupper/" target="_blank" class="keywords">toupper</a>Case()+fieldName.substring(1<span style="color: #000000;">)); Object ret</span>=<span style="color: #000000;">method.invoke(record); </span><span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">null</span>!=<span style="color: #000000;">ret){ cell.setCellValue(method.invoke(record).toString()); } } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e) { logger.info(</span>"write xls error,please check it"<span style="color: #000000;">); } } } FileOutputStream fileOut </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> FileOutputStream(excelFileName); </span><span style="color: #008000;">//</span><span style="color: #008000;">write this workbook to an Outputstream.</span>
<span style="color: #000000;"> wb.write(fileOut);
fileOut.flush();
fileOut.close();
}@SuppressWarnings({ </span>"resource","unused","rawtypes"<span style="color: #000000;"> }) </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> readXLSXFile() <span style="color: #0000ff;">throws</span><span style="color: #000000;"> IOException { InputStream ExcelFil<a href="https://www.jb51.cc/tag/eto/" target="_blank" class="keywords">eto</a>Read </span>= <span style="color: #0000ff;">new</span> FileInputStream("E:/source/Test1.xlsx"<span style="color: #000000;">); XSSFWorkbook wb </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> XSSFWorkbook(ExcelFil<a href="https://www.jb51.cc/tag/eto/" target="_blank" class="keywords">eto</a>Read); XSSFWorkbook test </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> XSSFWorkbook(); XSSFSheet sheet </span>= wb.getSheetAt(0<span style="color: #000000;">); XSSFRow row; XSSFCell cell; I<a href="https://www.jb51.cc/tag/tera/" target="_blank" class="keywords">tera</a>tor rows </span>=<span style="color: #000000;"> sheet.rowI<a href="https://www.jb51.cc/tag/tera/" target="_blank" class="keywords">tera</a>tor(); </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (rows.hasNext()) { row</span>=<span style="color: #000000;">(XSSFRow) rows.next(); I<a href="https://www.jb51.cc/tag/tera/" target="_blank" class="keywords">tera</a>tor cells </span>=<span style="color: #000000;"> row.cellI<a href="https://www.jb51.cc/tag/tera/" target="_blank" class="keywords">tera</a>tor(); </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (cells.hasNext()) { cell</span>=<span style="color: #000000;">(XSSFCell) cells.next(); </span><span style="color: #0000ff;">if</span> (cell.getCellType() ==<span style="color: #000000;"> XSSFCell.CELL_TYPE_STRING) { Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.print(cell.getStringCellValue()</span>+" "<span style="color: #000000;">); } </span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span>(cell.getCellType() ==<span style="color: #000000;"> XSSFCell.CELL_TYPE_NUMERIC) { Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.print(cell.getNumericCellValue()</span>+" "<span style="color: #000000;">); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #008000;">//</span><span style="color: #008000;">U Can Handel Boolean,Errors</span>
<span style="color: #000000;"> }
}
System.out.println();
}} @SuppressWarnings(</span>"resource"<span style="color: #000000;">) </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> writeXLSXFile() <span style="color: #0000ff;">throws</span><span style="color: #000000;"> IOException { String excelFileName </span>= "E:/source/Test1.xlsx";<span style="color: #008000;">//</span><span style="color: #008000;">name of excel file</span>
<span style="color: #000000;">
String sheetName = "Sheet1";<span style="color: #008000;">//<span style="color: #008000;">name of sheet
<span style="color: #000000;">
XSSFWorkbook wb = <span style="color: #0000ff;">new<span style="color: #000000;"> XSSFWorkbook();
XSSFSheet sheet =<span style="color: #000000;"> wb.createSheet(sheetName) ;</span><span style="color: #008000;">//</span><span style="color: #008000;">ite<a href="https://www.jb51.cc/tag/rating/" target="_blank" class="keywords">rating</a> r number of rows</span> <span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> r=0;r < 5; r++<span style="color: #000000;"> ) { XSSFRow row </span>=<span style="color: #000000;"> sheet.createRow(r); </span><span style="color: #008000;">//</span><span style="color: #008000;">ite<a href="https://www.jb51.cc/tag/rating/" target="_blank" class="keywords">rating</a> c number of columns</span> <span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> c=0;c < 5; c++<span style="color: #000000;"> ) { XSSFCell cell </span>=<span style="color: #000000;"> row.createCell(c); cell.setCellValue(</span>"Cell "+r+" "+<span style="color: #000000;">c); } } FileOutputStream fileOut </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> FileOutputStream(excelFileName); </span><span style="color: #008000;">//</span><span style="color: #008000;">write this workbook to an Outputstream.</span>
<span style="color: #000000;"> wb.write(fileOut);
fileOut.flush();
fileOut.close();
}</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> main(String[] args) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> IOException,NoSuchMethodException,S<a href="https://www.jb51.cc/tag/ecurity/" target="_blank" class="keywords">ecurity</a>Exception,<a href="https://www.jb51.cc/tag/illegalaccessexception/" target="_blank" class="keywords">illegalaccessexception</a>,Ille<a href="https://www.jb51.cc/tag/gal/" target="_blank" class="keywords">gal</a>ArgumentException,InvocationTargetException { List</span><Log> logs=<span style="color: #0000ff;">new</span> ArrayList<Log><span style="color: #000000;">(); </span><span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> i=1;i<2;i++<span style="color: #000000;">){ Log log</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> Log(); log.setId(Long.parseLong(</span>""+(i+6<span style="color: #000000;">))); log.setUserId(Long.parseLong(</span>""+<span style="color: #000000;">i)); log.setUserName(</span>"www"+<span style="color: #000000;">i); logs.add(log); } writeXLSFile(logs,</span>"E:/source/aa.xls"<span style="color: #000000;">); </span><span style="color: #000000;"> }</span></pre>