POI通用方法

    技术2022-05-20  60

    /*** */package cn.sh.ideal.common;import java.io.BufferedInputStream;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Random;import org.apache.poi.POIDocument;import org.apache.poi.hdgf.HDGFDiagram;import org.apache.poi.hpbf.HPBFDocument;import org.apache.poi.hslf.HSLFSlideShow;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;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.hssf.util.HSSFColor;import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.hwpf.extractor.WordExtractor;import org.apache.poi.hwpf.usermodel.Paragraph;import org.apache.poi.hwpf.usermodel.Range;import org.apache.poi.poifs.filesystem.DirectoryEntry;import org.apache.poi.poifs.filesystem.DocumentEntry;import org.apache.poi.poifs.filesystem.POIFSFileSystem;/*** @author liheng**/public class Poi extends AbstractSupport {    // This holds the common functionality for all POI Document classes.     // Currently, this relates to Document Information Properties     private POIDocument doc;        // Excel    private HSSFWorkbook workbook;    // Excel Sheet    private HSSFSheet sheet;    // Excel row    private HSSFRow excelrow;    // Word    private HWPFDocument worddoc;    // Word    private WordExtractor wordext;    // Powerpoint    private HSLFSlideShow silideshow;    // Publisher    private HPBFDocument publidoc;    // Visio and ...    private HDGFDiagram diagram;        /** Excel function begin **/    public HSSFWorkbook readExcel(String filename) throws FileNotFoundException,IOException    {        workbook = new HSSFWorkbook(new FileInputStream(filename));         return workbook;    }        public HSSFSheet readSheet(int index)    {        if(Assert.isNotNull(workbook))        {            sheet = workbook.getSheetAt(index);        }        return sheet;    }        public HSSFSheet readSheet(String name)    {        if(Assert.isNotNull(workbook))        {            sheet = workbook.getSheet(name);        }        return sheet;    }        public HSSFRow readRow(int index)    {        if(Assert.isNotNull(sheet))        {            excelrow = sheet.getRow(index);        }        return excelrow;    }        public HSSFCell readCell(int row,int column)    {        HSSFCell cell = null;        if(Assert.isNotNull(sheet))        {            cell = sheet.getRow(row).getCell(column);        }        return cell;    }        public List getListMap(String filename,int stratrow)throws FileNotFoundException,IOException    {        List list = new ArrayList();        Map map = new HashMap();                workbook = null;        sheet = null;                workbook = new HSSFWorkbook(new FileInputStream(filename));         sheet = workbook.getSheetAt(0);                for(int i=stratrow;i<=sheet.getLastRowNum();i++)        {            map.clear();            // Old pakage sheet.getRow(i).getCell((short)j)            for(int j=0;j<sheet.getRow(i).getLastCellNum();j++)            {                if(null == sheet.getRow(i).getCell(j))                {                    map.put("A"+j, " ");                    continue;                }                // CELL_TYPE_NUMERIC 数值型                if(HSSFCell.CELL_TYPE_NUMERIC == sheet.getRow(i).getCell(j).getCellType())                {                    map.put("A"+j, (long)sheet.getRow(i).getCell(j).getNumericCellValue());                }                // CELL_TYPE_STRING 字符串型                if(HSSFCell.CELL_TYPE_STRING == sheet.getRow(i).getCell(j).getCellType())                {                    map.put("A"+j, sheet.getRow(i).getCell(j).toString());                }                // CELL_TYPE_FORMULA 公式型                if(HSSFCell.CELL_TYPE_FORMULA == sheet.getRow(i).getCell(j).getCellType())                {                    map.put("A"+j, sheet.getRow(i).getCell(j).getCellFormula().toString());                }                // CELL_TYPE_BLANK 空值                if(HSSFCell.CELL_TYPE_BLANK == sheet.getRow(i).getCell(j).getCellType())                {                    map.put("A"+j, " ");                }                // CELL_TYPE_BOOLEAN 布尔型                if(HSSFCell.CELL_TYPE_BOOLEAN == sheet.getRow(i).getCell(j).getCellType())                {                    map.put("A"+j, sheet.getRow(i).getCell(j).getBooleanCellValue());                }                // CELL_TYPE_ERROR 错误                if(HSSFCell.CELL_TYPE_ERROR == sheet.getRow(i).getCell(j).getCellType())                {                    map.put("A"+j, " ");                }            }            System.out.println(map);        }                    return list;    }        public void writeExce(String filename,String sheetname,String header[],String key[],List<Map<Object,Object>> list) throws FileNotFoundException,IOException    {        OutputStream out = new FileOutputStream(new File(filename));        HSSFWorkbook workbook = new HSSFWorkbook();        HSSFSheet sheet = null;         // 创建Sheet时设置Sheet名称        if(Assert.isNotEmpty(sheetname))        {            sheet = workbook.createSheet(sheetname);        }        else        {            sheet = workbook.createSheet();        }        writeExceHeader(workbook,sheet,header);        writeExceData(sheet,header,key,list);        workbook.write(out);        out.close();    }    private void writeExceHeader(HSSFWorkbook workbook,HSSFSheet sheet,String header[])    {        if(Assert.isNotNull(sheet) && Assert.isNotEmpty(header))        {            HSSFRow row = sheet.createRow(0);            HSSFCell cell = null;            // 创建字体            HSSFFont font = workbook.createFont();            // 字体颜色            font.setColor(HSSFFont.COLOR_NORMAL);            // 设置字体加粗            font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);            // 设置字体大小            font.setFontHeight((short)220);            // 创建Cell格式            HSSFCellStyle cellStyle= workbook.createCellStyle();            // 设置背景样式            // cellStyle.setFillPattern(HSSFCellStyle.SPARSE_DOTS);            // 设置背景颜色            //cellStyle.setFillBackgroundColor(HSSFColor.AQUA.index);            //cellStyle.setFillPattern(HSSFCellStyle.BIG_SPOTS);            // 设置背景颜色            cellStyle.setFillForegroundColor(HSSFColor.YELLOW.index);            //cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);                        // 设置CELL字体            cellStyle.setFont(font);            // 设置居中            cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);            //cellStyle.setBorderRight(HSSFCellStyle.BORDER_SLANTED_DASH_DOT);            // 设置格式            //cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00"));            for(int i=0;i<header.length;i++)            {                cell = row.createCell(i);                cell.setCellStyle(cellStyle);                //cell.setCellType(HSSFCell.CELL_TYPE_STRING);                //cell.setEncoding(HSSFCell.ENCODING_UTF_16);                cell.setCellValue(header[i]);            }        }    }        private void writeExceData(HSSFSheet sheet,String header[],String key[],List<Map<Object,Object>> list)    {        HSSFRow row = null;        HSSFCell cell = null;        if(Assert.isNotNull(sheet)&& Assert.isNotEmpty(key) && Assert.isNotEmpty(list))        {            int rownum = 0;            if(Assert.isNotEmpty(header)) rownum = 1;            for(Map<Object,Object> map : list)            {                row = sheet.createRow(rownum++);                for(int i=0;i<key.length;i++)                {                    cell = row.createCell(i);                    cell.setCellValue(Assert.toString(map.get(key[i])));                }            }        }    }    /** Excel function end **/        /** Word function begin **/    public HWPFDocument readWord(String filename) throws IOException    {        worddoc = new HWPFDocument(new FileInputStream(filename));        return worddoc;    }        public WordExtractor readWord(String filename,boolean t) throws IOException    {        wordext = new WordExtractor(new FileInputStream(filename));        return wordext;    }        /**    * 读取Word文本内容    * <pre class="code">Poi.readWordText(filename);</pre>    * @param 文件路径文件名    * @return 返回<code>String</code>文本内容    */    public String readWordText(String filename)throws IOException    {        wordext = new WordExtractor(new FileInputStream(filename));        //return wordext.getTextFromPieces();        return wordext.getText();    }        public StringBuffer readWordText()    {        StringBuffer strbuff = new StringBuffer();        if(Assert.isNotNull(worddoc))        {            // 取得word文档的范围            Range r = worddoc.getRange ();            //StyleSheet styleSheet = worddoc.getStyleSheet ();                        // 取得段落数            int lenParagraph = r.numParagraphs ();            for (int i = 0; i < lenParagraph; i++)            {              Paragraph p = r.getParagraph (i);              //StyleDescription paragraphStyle = styleSheet.getStyleDescription (p.getStyleIndex ());              //String styleName = paragraphStyle.getName();              strbuff.append(p.text ());            }        }        return strbuff;    }        public void writeWord(String filename,String wordtext)throws FileNotFoundException,UnsupportedEncodingException,IOException    {        // 创建写文件流        OutputStream out = new FileOutputStream(new File(filename));        //OutputStreamWriter outwrite = new OutputStreamWriter (new FileOutputStream(new File(filename)), ENCODING );        //以下两句代码不能省略,否则输出的是乱码        POIFSFileSystem fs = new POIFSFileSystem();        DirectoryEntry directory = fs.getRoot();        // 根据系统默认编码格式 获取字节数组数据        byte[] a = new String( wordtext ).getBytes( ENCODING );        InputStream input = new ByteArrayInputStream(a);        DocumentEntry de = directory.createDocument("WordDocument", input);        // 将poi文件流向文件输出流        fs.writeFilesystem(out);        input.close();        out.flush();        out.close();        //HWPFDocument worddoc = new HWPFDocument();            }    /** Word function end **/        public static void main(String arg[])    {//        Poi poi = new Poi();//        //        String head[] = new String[]{"序列号","姓名","性别","地址","电话"};//        String key[] = new String[]{"id","name","sex","add","phone"};//        List<Map<Object,Object>> list = new ArrayList<Map<Object,Object>>();//        Random random = new Random();//        //        for(int i=0;i<20;i++)//        {//                Map<Object,Object> map = new HashMap<Object,Object>();//                map.put("id", random.nextInt(10));//                map.put("name", random.nextInt(10));//                map.put("sex", random.nextInt(10));//                map.put("add", random.nextInt(10));//                map.put("phone", random.nextInt(10));//                list.add(map);//        }//        //        try//        {//            poi.writeExce("c://test.xls","", head, key, list);//        }//        catch(Exception ex)//        {//            //        }//        try//        {//            poi.readWord("D://理想//业务支撑平台//业务支撑平台企业户名合法性判断_概要设计说明书.doc");//            System.out.println(poi.readWordText());//            poi.writeWord("c://test.doc");//            System.out.println(poi.readWordText("D://理想//业务支撑平台//业务支撑平台企业户名合法性判断_概要设计说明书.doc"));//        }//        catch(Exception ex)//        {//            System.out.println(ex.getMessage());//        }        try        {            Poi obj = new Poi();            //String file = "D://合肥//电费表.xls";            String file = "D://合肥//合肥、巢湖水电气数据//巢湖//2009年1月份居民客户电量电费.xls";            //String file = "D://合肥//水,电,煤数据导入格式//0905电费.xls";            obj.readExcel(file);            obj.readSheet(0);            obj.getListMap(file,1);                    }        catch(Exception ex)        {            System.out.println(ex.getMessage());        }                            }}


    最新回复(0)