/*
* 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的API来操作Excel(2003)文件,对POI中针对Excel文件的读写进行了简单封装。此类中包含以下功能: 1.根据模板创建Excel文件 ...压缩包中包含POI的jar文件、POIExcel的jar文件及POIExcel的源码
通过以上步骤,你可以使用Apache POI有效地操作Excel模板,并将数据填充到新生成的文件中。这在报表生成、数据分析、批量导出等方面非常实用。记得在实际项目中,还要处理异常、优化性能,比如使用缓冲流、避免频繁...
本篇将深入探讨"Excel POI 工具类",这个工具类旨在简化日常的Excel操作,提升开发效率。 Apache POI 提供了HSSF(Horizontally Stored Sheets Format)和XSSF(XML Spreadsheet Format)两个主要的API,分别用于...
在这个场景中,我们关注的是如何使用 POI 操作 Excel 工具类。这个工具类可以帮助开发者在 Java 环境下读写 Excel 文件,从而实现数据导入、导出等功能。下面将详细介绍 POI 操作 Excel 的关键知识点。 1. **工作簿...
5. 使用 Java POI 实现 Excel 导入导出工具类 在上面的示例中,我们已经实现了 Excel 导入和导出功能。下面是一个实现了 Excel 导入导出工具类的示例: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook...
为了使用 POI 操作 Excel 文件,首先需要准备以下环境: 1. **JDK 版本**:至少需要 JDK 1.4 或更高版本。 2. **POI 库**:下载 POI 库,可以从 Apache 官方网站获取:...
2. **读取模板**: 使用POI的XSSFWorkbook类打开模板文件,这将返回一个Workbook对象,代表整个Excel文件。然后,通过工作簿获取对应的Sheet对象,这对应Excel中的工作表。 ```java FileInputStream fis = new ...
在IT行业中,Apache POI是一个广泛使用的库,它允许开发者在Java环境中创建、修改和读取Microsoft Office格式的文件,尤其是Excel文档。本教程将详细讲解如何利用Apache POI库来实现“使用POI向Excel模板动态添加...
2. **使用Apache POI加载Excel**:然后,使用POI的HSSFWorkbook或XSSFWorkbook类打开Excel文件。根据你的Excel文件类型,选择对应的API。例如,如果你正在处理的是.xlsx文件,那么应该使用XSSFWorkbook。 3. **插入...
Java 使用Apache POI库操作Excel 2007文件详解 在Java开发中,处理Excel文件是一项常见的任务,特别是对于数据分析、数据导入导出或报表生成等场景。Apache POI是一个流行的开源库,它允许开发者读写Microsoft ...
标题“poi导出excel通用类”指的是使用Apache POI库创建一个可以用于导出Excel文件的Java类。Apache POI是开源项目,提供了一组API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件,包括Excel。在...
Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel(.xlsx)文档。在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成...
本教程将深入讲解如何使用POI来动态地在Excel中创建各种图表,包括柱状图、组合图、环状图和折线图。 首先,确保已经添加了Apache POI的依赖到项目中。通常,对于Maven项目,可以在pom.xml文件中添加以下依赖: ``...
在本文中,我们将深入探讨如何使用Apache POI来创建和修改Excel工作簿,特别是进行写操作。 首先,要使用Apache POI,你需要将其添加到你的项目依赖中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: `...
在压缩包的文件名“poi2007”中,我们可以推测这可能包含了一些与POI操作Excel 2007文件相关的类或者示例代码。这些代码可能包含了上述所有步骤,帮助开发者更好地理解如何使用Apache POI来处理XLSX格式的Excel文件...
在本示例中,我们关注的是如何使用POI库来操作Excel 2007(.xlsx)文件。这个压缩包包含了必要的库文件和示例代码,帮助开发者开始使用POI进行Excel文件的操作。 1. **Apache POI简介** Apache POI 是由Apache软件...
例如,可以使用反射动态地根据Excel工作表的列名创建对应的Java对象属性,或者在不知道具体类结构的情况下解析Excel数据。 约定通常是在封装过程中设定的一系列规则,这些规则定义了如何将Excel文件与Java对象相互...
在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...
可能包含了数据库连接的配置、SQL查询的测试、POI操作Excel的单元测试等。 在实际应用中,我们还需要考虑性能优化,比如使用PreparedStatement防止SQL注入,批量插入数据以减少数据库交互次数,以及合理设置内存...