POI简介,Excel表格导入及导出后端代码

​​​​​​POI简介

        Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“可怜的模糊实现”。

        用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)

结构:

        HSSF  - 提供读写Microsoft Excel XLS格式档案的功能。

        XSSF  - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。

        HWPF  - 提供读写Microsoft Word DOC格式档案的功能。

        HSLF  - 提供读写Microsoft PowerPoint格式档案的功能。

        HDGF  - 提供读Microsoft Visio格式档案的功能。

        HPBF  - 提供读Microsoft Publisher格式档案的功能。

        HSMF  - 提供读Microsoft Outlook格式档案的功能。

Demo示例

1.导入pom.xml依赖

<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi</artifactId>
	<version>3.11</version>
</dependency>

2. 测试类

package com.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

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.HSSFFont;
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.util.CellRangeAddress;

public class POIDemo {
	public static void main(String[] args) throws Exception {
		//api可以上网找
		// https://www.cnblogs.com/mh-study/p/9754692.html
		// http://poi.apache.org/apidocs/4.0/
		//demo1();
//		demo2();
	}
	/**
	 * 建简单excel
	 * @throws Exception
	 */
	public static void demo1()throws Exception{
		HSSFWorkbook wk = new HSSFWorkbook();//创建excel工作簿
		HSSFSheet sheet = wk.createSheet("我的工作表");//创建一个工作表
		HSSFRow row = sheet.createRow(0);//创建第一行
		HSSFCell cell = row.createCell(0);//创建第一个单元格
		cell.setCellValue("测试");//单元格内设置值
		//保存文件到本地目录
		wk.write(new FileOutputStream(new File("C:\\Users\\Administrator\\Desktop\\test.xls")));
		wk.close();//关闭工作簿
	}
	/**
	 * 建复杂excel
	 * @throws Exception
	 */
	public static void demo2()throws Exception{
		HSSFWorkbook wk = new HSSFWorkbook();
        HSSFSheet sheet = wk.createSheet("采购订单");// 工作表
        
        // 内容样式
        HSSFCellStyle style = wk.createCellStyle(); 
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);//下边框
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
        //内容部分对其设置
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
        //内容部分字体
        HSSFFont font = wk.createFont();//创建字体
        font.setFontName("宋体");//设置字体名称
        font.setFontHeightInPoints((short) 11);//设置字体大小
        style.setFont(font);//设置样式的字体
        
        //日期格式,如果有单元格使用style_date set进去即可
        HSSFCellStyle style_date = wk.createCellStyle();
        style_date.cloneStyleFrom(style);
        HSSFDataFormat dataFormat = wk.createDataFormat();
        style_date.setDataFormat(dataFormat.getFormat("yyyy-MM-dd hh:mm"));
        
        // 创建10行4列
        for(int i = 2; i < 12; i++){//第二行开始
            HSSFRow row = sheet.createRow(i);//创建行
            for(int j = 0; j < 4; j++){
                HSSFCell cell = row.createCell(j);//创建订单元格
                cell.setCellStyle(style);//设置单元格的样式
            }
            
        }
        
        //合并单元格  
        sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));//合并第0行到第0行 , 第0列到第3列
        sheet.addMergedRegion(new CellRangeAddress(2,2,1,3));
        sheet.addMergedRegion(new CellRangeAddress(7,7,0,3));
        //设置行高列宽
        sheet.createRow(0);
        sheet.getRow(0).setHeight((short) 1000);//设置行高,第一行高1000
        sheet.setColumnWidth(0, 5000);//设置列宽,第1列设置列宽5000
        
		//保存文件到本地目录
		wk.write(new FileOutputStream(new File("C:\\Users\\Administrator\\Desktop\\test.xls")));
		wk.close();//关闭工作簿
	}
	/**
	 * 读取excel
	 * @throws Exception
	 */
	public void doImport(InputStream is)throws Exception{
		HSSFWorkbook wb =  new HSSFWorkbook(is);//创建excel文件
		HSSFSheet sheet = wb.getSheetAt(0);//获取第一个工作表
		String sheetName = sheet.getSheetName();//获取工作表表名
		int lastRowNum = sheet.getLastRowNum();//获取最后一行行号
		HSSFRow row = sheet.getRow(0);//获取第一行
		HSSFCell cell = row.getCell(0);//用第一行获取第一个单元格
		String value = cell.getStringCellValue();//获取单元格内的值
	}
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值