`
keating
  • 浏览: 170008 次
  • 性别: Icon_minigender_1
  • 来自: weihai
社区版块
存档分类
最新评论

使用POI, 我的Excel操作类

    博客分类:
  • Java
阅读更多
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * 获得、设置单元格的内容
 */
package util.excel;

import java.text.DecimalFormat;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.ss.usermodel.Cell;

/**
 *
 * @author Administrator
 */
public class CellContent {

    private static DecimalFormat decimalFormat = new DecimalFormat("#.##"); //格式化数字为正整数

    public static String getContent(HSSFCell cell) {//获得一个单元格的内容
        if (cell == null) {
            return "";
        }
        String content = "";
        if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
            content = decimalFormat.format(cell.getNumericCellValue());
        } else {
            try {
                content = cell.getStringCellValue().trim();
            } catch (java.lang.IllegalStateException e) {
                content = decimalFormat.format(cell.getNumericCellValue());
            }
        }
        return content;
    }
    //设置一个单元格的内容

    public static void setContent(HSSFCell cell, String content) {
        if (cell == null) {
            return;
        }
        try {
            double d = Double.parseDouble(content);
            cell.setCellValue(d);
        } catch (Exception e) {
            cell.setCellValue(content);
        }
    }
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package util.excel;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.IndexedColors;

/**
 *
 * @author Administrator
 */
public class CellStyle {

    private HSSFWorkbook book = null; //
    private HSSFCellStyle fullStyle = null;//单元格格式

    public CellStyle(HSSFWorkbook book) {
        this.book = book;
        this.fullStyle = book.createCellStyle(); //full style
        this.initStyle();
    }

    public HSSFCellStyle getStyle() {
        return this.fullStyle;
    }

    //只用于更改字体
    public void initStyle(int fontSize) {
        HSSFFont font = book.createFont();//字体
        font.setFontName("宋体");
        font.setFontHeight((short) (fontSize * 20));
        font.setBoldweight((short) (fontSize * 20));
        fullStyle.setFont(font);
    }

    private void initStyle() {//初始化调用这个方法,使用默认字体
        this.otherStyle();//先设置其它样式
        HSSFFont font = book.createFont();//字体
        font.setFontName("宋体");
        font.setFontHeight((short) (12 * 20));
        font.setBoldweight((short) (12 * 20));
        fullStyle.setFont(font);
    }
    //除字体之外的其它格式

    private void otherStyle() {
        fullStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //薄边框
        fullStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        fullStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        fullStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        fullStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex()); //边框颜色
        fullStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
        fullStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
        fullStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
        fullStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //居中对齐
    }
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * 将sheet页面格式化,让它beautiful
 */
package util.excel;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 *
 * @author Administrator
 */
public class BeautySheet {

    private HSSFSheet sheet = null;
    private HSSFWorkbook book = null;

    public BeautySheet(HSSFSheet sheet, HSSFWorkbook book) {
        this.sheet = sheet;
        this.book = book;
    }

    public void beautyThis() {
        CellStyle style = new CellStyle(book);//创建一个cellstyle,单元格样式
        for (int i = 0; i <= sheet.getLastRowNum(); i++) {
            HSSFRow row = sheet.getRow(i);
            for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) {
                HSSFCell cell = row.getCell(j);
                if (cell != null) {
                    cell.setCellStyle(style.getStyle());
                }
            }
        }
        HSSFRow firstRow = sheet.getRow(0);
        for (int i = 0; i < firstRow.getPhysicalNumberOfCells(); i++) { //Sheet页面自动控制列宽 根据第一行
            sheet.autoSizeColumn(i);
        }
    }
}

/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * 将该JTable导出到一个poi sheet
 */
package util.excel;

import java.util.Vector;
import javax.swing.JTable;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;

/**
 * 
 * @author Administrator
 */
public class SheetExporter {

    private JTable table = null;//表格
    private DefaultTableModel tableModel = null;//表格的数据模型
    private HSSFSheet sheet;//要导出的sheet页

    public SheetExporter(JTable table, HSSFSheet sheet) {
        this.table = table;
        this.tableModel = (DefaultTableModel) table.getModel();
        this.sheet = sheet;
    }

    //导出表格:这里只包含表格的列名称以及表格内容啊!
    public void export() {
        this.exportHead(this.columnName());//导出表头
        this.exportContent();//导出表格内容(数据部分,即不包含列名称的)
    }
    //获得表格的列名称

    private Vector<Object> columnName() {
        DefaultTableColumnModel columnModel = (DefaultTableColumnModel) table.getTableHeader().getColumnModel(); //表格的列模型
        Vector<Object> columnNames = new Vector<Object>();//columnName
        for (int i = 0; i < columnModel.getColumnCount(); i++) {
            columnNames.add(columnModel.getColumn(i).getHeaderValue());
        }
        return columnNames;
    }
    //导出表头:列名称  默认导入到第0行,从第0列开始导出

    private void exportHead(Vector<Object> v) {
        HSSFRow row = this.sheet.createRow(0);//创建第0行
        for (int i = 0; i < v.size(); i++) {
            HSSFCell cell = row.createCell(i);
            cell.setCellValue(v.get(i).toString());
        }
    }
    //导出JTable的内容部分,不含表头

    private void exportContent() {
        Vector<Vector<Object>> v = this.tableModel.getDataVector();
        for (int i = 0; i < v.size(); i++) {
            HSSFRow row = this.sheet.createRow(i + 1); //创建行
            Vector<Object> v_o = v.get(i);
            for (int j = 0; j < v_o.size(); j++) {
                String str = (v_o.get(j) == null) ? "" : v_o.get(j).toString();
                HSSFCell cell = row.createCell(j);
                try {
                    double d = Double.parseDouble(str);
                    cell.setCellValue(d);
                } catch (Exception e) {
                    cell.setCellValue(str);
                }
            }
        }
    }
}

分享到:
评论

相关推荐

    基于POI的Excel操作Java类

    为更方便的使用POI的API来操作Excel(2003)文件,对POI中针对Excel文件的读写进行了简单封装。此类中包含以下功能: 1.根据模板创建Excel文件 ...压缩包中包含POI的jar文件、POIExcel的jar文件及POIExcel的源码

    poi 操作excel模板

    通过以上步骤,你可以使用Apache POI有效地操作Excel模板,并将数据填充到新生成的文件中。这在报表生成、数据分析、批量导出等方面非常实用。记得在实际项目中,还要处理异常、优化性能,比如使用缓冲流、避免频繁...

    Excel POI 工具类

    本篇将深入探讨"Excel POI 工具类",这个工具类旨在简化日常的Excel操作,提升开发效率。 Apache POI 提供了HSSF(Horizontally Stored Sheets Format)和XSSF(XML Spreadsheet Format)两个主要的API,分别用于...

    POI 操作Excel工具类

    在这个场景中,我们关注的是如何使用 POI 操作 Excel 工具类。这个工具类可以帮助开发者在 Java 环境下读写 Excel 文件,从而实现数据导入、导出等功能。下面将详细介绍 POI 操作 Excel 的关键知识点。 1. **工作簿...

    java_poi实现excel导入导出

    5. 使用 Java POI 实现 Excel 导入导出工具类 在上面的示例中,我们已经实现了 Excel 导入和导出功能。下面是一个实现了 Excel 导入导出工具类的示例: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook...

    poi excel poi excel poi excel

    为了使用 POI 操作 Excel 文件,首先需要准备以下环境: 1. **JDK 版本**:至少需要 JDK 1.4 或更高版本。 2. **POI 库**:下载 POI 库,可以从 Apache 官方网站获取:...

    POI使用Excel模板文件循环输出行并导出Excel

    2. **读取模板**: 使用POI的XSSFWorkbook类打开模板文件,这将返回一个Workbook对象,代表整个Excel文件。然后,通过工作簿获取对应的Sheet对象,这对应Excel中的工作表。 ```java FileInputStream fis = new ...

    使用POI向Excel模板动态添加内容

    在IT行业中,Apache POI是一个广泛使用的库,它允许开发者在Java环境中创建、修改和读取Microsoft Office格式的文件,尤其是Excel文档。本教程将详细讲解如何利用Apache POI库来实现“使用POI向Excel模板动态添加...

    POI操作Excel完美生成水印

    2. **使用Apache POI加载Excel**:然后,使用POI的HSSFWorkbook或XSSFWorkbook类打开Excel文件。根据你的Excel文件类型,选择对应的API。例如,如果你正在处理的是.xlsx文件,那么应该使用XSSFWorkbook。 3. **插入...

    java使用POI操作excel (支持excel2007)

    Java 使用Apache POI库操作Excel 2007文件详解 在Java开发中,处理Excel文件是一项常见的任务,特别是对于数据分析、数据导入导出或报表生成等场景。Apache POI是一个流行的开源库,它允许开发者读写Microsoft ...

    poi导出excel通用类

    标题“poi导出excel通用类”指的是使用Apache POI库创建一个可以用于导出Excel文件的Java类。Apache POI是开源项目,提供了一组API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件,包括Excel。在...

    java的poi生成excel图表demo

    Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel(.xlsx)文档。在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成...

    使用POI在Excel中动态生成图表工具类(支持柱状、组合、环状图、折线图、等常用图)

    本教程将深入讲解如何使用POI来动态地在Excel中创建各种图表,包括柱状图、组合图、环状图和折线图。 首先,确保已经添加了Apache POI的依赖到项目中。通常,对于Maven项目,可以在pom.xml文件中添加以下依赖: ``...

    使用POI操作Excel文件(写)

    在本文中,我们将深入探讨如何使用Apache POI来创建和修改Excel工作簿,特别是进行写操作。 首先,要使用Apache POI,你需要将其添加到你的项目依赖中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: `...

    POI 生成EXCEL2007【含例子】

    在压缩包的文件名“poi2007”中,我们可以推测这可能包含了一些与POI操作Excel 2007文件相关的类或者示例代码。这些代码可能包含了上述所有步骤,帮助开发者更好地理解如何使用Apache POI来处理XLSX格式的Excel文件...

    使用poi操作Excel2007工具类及示例(包括完整Jar包)

    在本示例中,我们关注的是如何使用POI库来操作Excel 2007(.xlsx)文件。这个压缩包包含了必要的库文件和示例代码,帮助开发者开始使用POI进行Excel文件的操作。 1. **Apache POI简介** Apache POI 是由Apache软件...

    POI操作Excel的封装

    例如,可以使用反射动态地根据Excel工作表的列名创建对应的Java对象属性,或者在不知道具体类结构的情况下解析Excel数据。 约定通常是在封装过程中设定的一系列规则,这些规则定义了如何将Excel文件与Java对象相互...

    POI导出Excel工具类,自动设置标题 列名 文件名,可插入图片,合并单元格

    在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...

    使用poi从数据库导出excel表的示例

    可能包含了数据库连接的配置、SQL查询的测试、POI操作Excel的单元测试等。 在实际应用中,我们还需要考虑性能优化,比如使用PreparedStatement防止SQL注入,批量插入数据以减少数据库交互次数,以及合理设置内存...

Global site tag (gtag.js) - Google Analytics