1 下载poi,地址
http://poi.apache.org/
选择3.9版本。
2
刚开始尝试 把poi.jar放在D:Program Filesjavajdk1.6.0_20lib(不管用。删除)
若你的是web Project工程,就直接把poi.jar包复制粘贴到webroot的web-inf下面的lib文件夹里面;
若你的是java Project工程,就打开盖工程的属性(Properties)找到他的java build path然后有个Libraries选项卡在右侧可通过Add jars来添加放置在工程里面的poi.jar包,如果你的这个poi.jar包不是放在工程中的,可以通过add external jars来添加外部jar包
3 创建1个EXCEL文件。
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class PoiMain { /** * @param args */ public static void main(String[] args) { try { // 创建一个Excel文件 HSSFWorkbook wb = new HSSFWorkbook(); String path = "D:\Workspace\TestPOI\a.xls"; FileOutputStream fileOut = new FileOutputStream(new File(path)); wb.write(fileOut); fileOut.close(); } catch (Exception e) { // TODO: handle exception } } }
包结构
4 创建一个Excle,并写入各种格式的内容
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.poi.hssf.usermodel.*;//Excel所有 public class PoiMain { /** * @param args * 创建一个xls文件 * 用到org.apache.poi.hssf.usermodel.HSSFWorkbook;//Excel的文档对象 * 主程序,唯一程序,排他 * @作者 小白 */ // public static void main(String[] args) { // try { // // 创建一个Excel文件 // HSSFWorkbook wb = new HSSFWorkbook(); // String path = "D:\Workspace\TestPOI\a.xls"; // FileOutputStream fileOut = new FileOutputStream(new File(path)); // wb.write(fileOut); // fileOut.close(); // } catch (Exception e) { // // TODO: handle exception // } // // } /** * @param args * 创建一个xls文件 * 用到org.apache.poi.hssf.usermodel.*;//Excel所有 * 主程序,唯一程序,排他 */ public static void main(String[] args) throws IOException{ try { HSSFWorkbook wb = new HSSFWorkbook(); //建立新HSSFWorkbook对象 HSSFSheet sheet = wb.createSheet("new sheet"); //建立新的sheet对象 //第0行 HSSFRow row = sheet.createRow((short)0); //在sheet里创建一行,参数为行号(第一行,此处可想象成数组) HSSFCell cell = row.createCell(0); //在row里建立新cell(单元格),参数为列号(第一列) cell.setCellValue(1) ;//设置cell的整数类型的值 row.createCell(1).setCellValue(1.2); //设置cell浮点类型的值 row.createCell(2).setCellValue("haha"); //设置cell字符类型的值 row.createCell(3).setCellValue(true); //设置cell布尔类型的值 HSSFCellStyle cellStyle = wb.createCellStyle(); //建立新的cell样式 HSSFDataFormat format= wb.createDataFormat(); cellStyle.setDataFormat(format.getFormat("yyyy年mm月d日 hh:mm:ss"));//这两行是日期格式的重点 //设置cell样式为定制的日期格式 HSSFCell dCell =row.createCell(4); dCell.setCellValue(new Date()); //设置cell为日期类型的值 dCell.setCellStyle(cellStyle); //设置该cell日期的显示格式 HSSFCell csCell =row.createCell(5); // csCell.setEncoding(HSSFCell.ENCODING_UTF_16); //设置cell编码解决中文高位字节截断 csCell.setCellValue("这是中文的测试"); //设置中西文结合字符串 row.createCell(6).setCellType(HSSFCell.CELL_TYPE_ERROR); //建立错误cell //第1行 HSSFRow row1 = sheet.createRow(1); row1.createCell(0).setCellValue(false); row1.createCell(1).setCellValue(19907); row1.createCell(2).setCellValue("中华民国"); //创建生成文件 String path = "D:\Workspace\TestPOI\ab.xls"; FileOutputStream fileOut = new FileOutputStream(new File(path)); wb.write(fileOut); fileOut.close(); } catch (Exception e) { // TODO: handle exception } } }
包结构
表内容
5 把刚才创建的东东读出来
为了方便主函数操作,把读写类和测试类分开了
包结构:
主类 PoiMain.java
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.poi.hssf.usermodel.*;//Excel所有 public class PoiMain { /** * @param args * 创建一个xls文件 * 用到org.apache.poi.hssf.usermodel.HSSFWorkbook;//Excel的文档对象 * 主程序,唯一程序,排他 * @作者 小白 */ // public static void main(String[] args) { // try { // // 创建一个Excel文件 // HSSFWorkbook wb = new HSSFWorkbook(); // String path = "D:\Workspace\TestPOI\a.xls"; // FileOutputStream fileOut = new FileOutputStream(new File(path)); // wb.write(fileOut); // fileOut.close(); // } catch (Exception e) { // // TODO: handle exception // } // // } /** * @param args * 创建一个xls文件 * 用到org.apache.poi.hssf.usermodel.*;//Excel所有 * 主程序,唯一程序,排他 */ public static void main(String[] args) throws IOException{ //创建Excel // CreatExcelTest cTest = new CreatExcelTest(); // cTest.creatExcel(); //读取Excel GetVlueTest gTest = new GetVlueTest(); gTest.getvalue(); // TestPrint testPrint = new TestPrint(); // testPrint.TestPrint(); } }
创建Excel的类 CreatExcelTest.java
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class CreatExcelTest { public static void creatExcel(){ try { HSSFWorkbook wb = new HSSFWorkbook(); //建立新HSSFWorkbook对象 HSSFSheet sheet = wb.createSheet("new sheet"); //建立新的sheet对象 //第0行 HSSFRow row = sheet.createRow((short)0); //在sheet里创建一行,参数为行号(第一行,此处可想象成数组) HSSFCell cell = row.createCell(0); //在row里建立新cell(单元格),参数为列号(第一列) cell.setCellValue(1) ;//设置cell的整数类型的值 row.createCell(1).setCellValue(1.2); //设置cell浮点类型的值 row.createCell(2).setCellValue("haha"); //设置cell字符类型的值 row.createCell(3).setCellValue(true); //设置cell布尔类型的值 HSSFCellStyle cellStyle = wb.createCellStyle(); //建立新的cell样式 HSSFDataFormat format= wb.createDataFormat(); cellStyle.setDataFormat(format.getFormat("yyyy年mm月d日 hh:mm:ss"));//这两行是日期格式的重点 //设置cell样式为定制的日期格式 HSSFCell dCell =row.createCell(4); dCell.setCellValue(new Date()); //设置cell为日期类型的值 dCell.setCellStyle(cellStyle); //设置该cell日期的显示格式 HSSFCell csCell =row.createCell(5); // csCell.setEncoding(HSSFCell.ENCODING_UTF_16); //设置cell编码解决中文高位字节截断 csCell.setCellValue("这是中文的测试"); //设置中西文结合字符串 row.createCell(6).setCellType(HSSFCell.CELL_TYPE_ERROR); //建立错误cell //第1行 HSSFRow row1 = sheet.createRow(1); row1.createCell(0).setCellValue(false); row1.createCell(1).setCellValue(19907); row1.createCell(2).setCellValue("中华民国a "); //创建生成文件 String path = "D:\Workspace\TestPOI\abcd.xls"; FileOutputStream fileOut = new FileOutputStream(new File(path)); wb.write(fileOut); fileOut.close(); } catch (Exception e) { // TODO: handle exception } } }
读取Excel的类,读取出来的内容打印在控制台了。
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.tools.JavaFileObject.Kind; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class GetVlueTest { public static void getvalue(){ try { String filePath = "D:\Workspace\TestPOI\b.xls"; HSSFWorkbook hssfWorkbook = new HSSFWorkbook(new FileInputStream(filePath)); HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0); int i = hssfSheet.getLastRowNum();//最后一行行标,比行数小1 for(int k=0; k<=i;k++){ int m = hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1 for(int j=0; j<m;j++) { hssfSheet.getRow(k).getCell(j).setCellType(HSSFCell.CELL_TYPE_STRING);//为了打印输出,强制把不是字符串的东东转换成字符串 System.out.println(hssfSheet.getRow(k).getCell(j).getStringCellValue()); } } } catch (Exception e) { // TODO: handle exception } } }