2.1创建workbook
HSSFWorkbook wb = new HSSFWorkbook();
//使用默认的构造方法创建workbook
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
//指定文件名
wb.write(fileOut);
//输出到文件
fileOut.close();
2.2创建一个sheet
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("new sheet");
//workbook创建sheet
HSSFSheet sheet2 = wb.createSheet("second sheet");
//workbook创建另外的sheet
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
2.3创建cells
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
//注意以下的代码很多方法的参数是short 而不是int 所以需要做一次类型转换
HSSFRow row = sheet.createRow((short)0);
//sheet 创建一行
HSSFCell cell = row.createCell((short)0);
//行创建一个单元格
cell.setCellValue(1);
//设定单元格的值
//值的类型参数有多中double ,String ,boolean,
row.createCell((short)1).setCellValue(1.2);
row.createCell((short)2).setCellValue("This is a string");
row.createCell((short)3).setCellValue(true);
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
2.4创建日期cells
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short)0);
HSSFCell cell = row.createCell((short)0);
//设定值为日期
cell.setCellValue(new Date());
HSSFCellStyle cellStyle = wb.createCellStyle();
//指定日期显示格式
cellStyle.setDataFormat(HSSFDataFormat.getFormat("m/d/yy h:mm"));
cell = row.createCell((short)1);
cell.setCellValue(new Date());
//设定单元格日期显示格式
cell.setCellStyle(cellStyle);
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
2.5设定单元格格式
单元格格式的设定有很多形式包括单元格的对齐方式,内容的字体设置,单元格的背景色等,因为形式比较多,只举一些例子.以下的例子在POI1.5中可能会有所改变具体查看API.
// Aqua background
HSSFCellStyle style = wb.createCellStyle();
//创建一个样式
style.setFillBackgroundColor(HSSFCellStyle.AQUA);
//设定此样式的的背景颜色填充
style.setFillPattern(HSSFCellStyle.BIG_SPOTS);
//样式的填充类型。
//有多种式样如:
//HSSFCellStyle.BIG_SPOTS
//HSSFCellStyle.FINE_DOTS
//HSSFCellStyle.SPARSE_DOTS等
style.setAlignment(HSSFCellStyle.ALIGN_CENTER );
//居中对齐
style.setFillBackgroundColor(HSSFColor.GREEN.index);
//设定单元个背景颜色
style.setFillForegroundColor(HSSFColor.RED.index);
//设置单元格显示颜色
HSSFCell cell = row.createCell((short) 1);
cell.setCellValue("X");
cell.setCellStyle(style);
目的:要在excel中画一条线。
public void drawMyLine()
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet(“excel文件名”);
// 创建HSSFPatriarch对象
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
drawLine(srcCol, srcRow, dstCol, dstRow, srcX, srcY, dstX, dstY, patriarch);
saveExcelFile(workbook,”e:\aa.xlsx”,3);
}
/**
* 从一个坐标点到另一个坐标点画一根线,内含偏移量修正代码。
* @param srcCol 起点单元格列
* @param srcRow 起点单元格行
* @param dstCol 终点单元格列
* @param dstRow 终点单元格行
* @param srcX 起点单元格内X偏移量
* @param srcY 起点单元格内Y偏移量
* @param dstX 终点单元格内X偏移量
* @param dstY 终点单元格内Y偏移量
* @param patriarch 画线需要的对象
*/
privatevoid drawLine(int srcCol, int srcRow, int dstCol, int dstRow, int srcX, int srcY, int dstX, int dstY, HSSFPatriarch patriarch)
{
HSSFClientAnchor anchorPA = new HSSFClientAnchor(srcX, srcY, dstX, dstY, (short)srcCol, srcRow, (short)dstCol, dstRow);
// 该画线函数存在严重问题,从同一点向其他方向画线会出现单元格内偏移量出现交错,因此写了如下代码进行修正。
if (dstCol > srcCol && dstRow > srcRow)
{
// 保持原状
}
elseif (dstCol > srcCol && dstRow < srcRow)
{
anchorPA.setDy1(dstY);
anchorPA.setDy2(srcY);
}
elseif (dstCol < srcCol && dstRow < srcRow)
{
anchorPA.setDx1(dstX);
anchorPA.setDx2(srcX);
anchorPA.setDy1(dstY);
anchorPA.setDy2(srcY);
}
elseif (dstCol < srcCol && dstRow > srcRow)
{
anchorPA.setDx1(dstX);
anchorPA.setDx2(srcX);
}
// 偏移量修正完毕。
// 设置图形不随单元格改变
anchorPA.setAnchorType(2);
// 设置线段样式并画线
HSSFSimpleShape line = patriarch.createSimpleShape(anchorPA);
line.setShapeType(HSSFSimpleShape.OBJECT_TYPE_LINE);
line.setLineStyle(HSSFShape.LINESTYLE_SOLID);
line.setLineWidth(6350);
}
/**
* 保存带有模板的Excel文件, 保存后需要将模板sheet页删除.
* @param workbook 工作表
* @param fileName 文件名
* @param templateSheetNum 模版sheet的个数,保存excel前要移除这些模版
* @throws Exception
*/
publicstaticvoid saveExcelFile(HSSFWorkbook workbook, String fileName, int templateSheetNum) throws Exception
{
FileOutputStream output = null;
try
{
// 输出流, 将PPT写到磁盘中
output = new FileOutputStream(fileName);
// 删除模板页
for (int i = 0; i < templateSheetNum; i++)
{
workbook.removeSheetAt(0);
}
workbook.write(output);
output.flush();
output.close();
}
catch (Exception e)
{
throw e;
}
finally
{
try
{
// 关闭输出流
if (output != null)
{
output.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
目的:在excel中嵌入一个图片
public void drawPicture()
{
HSSFClientAnchor anchorPA = new HSSFClientAnchor();
// 图形不随单元格改变
anchorPA.setAnchorType(2);
// 设置图形左上角的锚点,x = 20,y = 20处画图形
anchorPA.setCol1(20);
anchorPA.setRow1(20);
InputStream stream = this.getClass().getResourceAsStream(file);
byte[] data = newbyte[stream.available()];
stream.read(data);
stream.close();
// 画图形
patriarch.createPicture(anchorPA,workbook.addPicture(data, HSSFWorkbook.PICTURE_TYPE_JPEG)).resize();
FileOutputStream output = new FileOutputStream(fileName);
workbook.write(output);
output.close();
}
目的:在指定的单元格写东西
// 设置站点名称以及单元格格式
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFCellStyle style = workbook.createCellStyle();
style.setAlignment(CellStyle.ALIGN_LEFT);
// 站点名单元格偏移
int cellOffset = 2;
if (sheet.getRow(row + cellOffset) == null)
{
HSSFCell cell = sheet.createRow(row + cellOffset).createCell(col);
cell.setCellValue(new HSSFRichTextString(neModel.getName()));
cell.setCellStyle(style);
}
else
{
HSSFCell cell = sheet.getRow(row + cellOffset).createCell(col);
cell.setCellValue(new HSSFRichTextString(neModel.getName()));
cell.setCellStyle(style);
}
相关推荐
2. **数据类型**:Excel中的数据类型包括字符串、数字、日期等,需要正确处理这些类型,防止数据丢失或转换错误。 3. **样式和格式**:POI允许设置单元格的样式,如字体、颜色、边框、对齐方式等,以增强Excel的...
本篇将深入探讨如何利用Apache POI来操作Excel模板,以及如何读取数据并将其填充到新生成的文件中,最终提供下载。 首先,你需要在项目中引入Apache POI的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下...
本文将详细介绍如何使用POI库在Java中进行Excel的读写操作,以及一个在Eclipse环境中运行的实例。 首先,我们需要了解Apache POI的基本概念。POI是Apache软件基金会的一个开源项目,它提供了Java API来处理...
6. **图表和图片**:可以创建和修改Excel中的图表,插入图片到工作表中。 7. **高级功能**:如条件格式、数据验证、合并单元格等。 在实际使用中,Java开发者首先需要将对应的JAR包添加到项目的类路径中,然后就...
标题中的“poi操作excel案例”指的是使用Apache POI库来处理Excel文件的示例项目。Apache POI是一个开源的Java库,它允许开发者创建、修改和显示Microsoft Office格式的文件,包括Excel工作簿(XLS和XLSX)。在这个...
在本文中,我们将学习如何将poi导入到eclipse中,并搭建好eclipse环境项目,以便更深一步地学习Java读取Microsoft Office的文件。 首先,需要下载poi的jar包。截至本文发表,poi最新版本是3.0.1,距离上一个Final...
本教程将深入探讨如何利用Apache POI来在Excel文件中完美地生成水印。水印通常用于标识文档的所有权或提供额外的安全层,而这里的水印是通过将文字转化为图片再添加到Excel工作表中实现的。 首先,我们需要了解...
这篇博客文章“POI操作Excel常用方法总结”可能详细介绍了如何利用Apache POI库在Java环境中读写Excel文件。以下是对该主题的一些关键知识点的详细说明: 1. **Apache POI介绍**: Apache POI是开源项目,提供了...
在“poi操作excel表格导入和导出”这个主题中,我们将深入探讨如何利用Apache POI进行Excel数据的处理,包括导入和导出。 一、Apache POI简介 Apache POI是一个开源项目,它提供了API来处理Microsoft Office格式的...
在这个场景中,"POI操作Excel的封装"指的是对POI API进行的高级抽象和简化,以便于开发人员更方便地处理Excel文件。通过反射和约定,可以创建一个易于使用的API,隐藏底层复杂的POI细节。 反射是Java编程语言中的一...
这个"poi操作excel的Demo"很可能是提供了一个使用Apache POI库来读取、写入或修改Excel文件的示例代码。下面将详细介绍Apache POI在处理Excel时的一些关键知识点。 1. **Apache POI概述**: Apache POI 是Java平台...
5. **公式和数据类型**:Apache POI支持处理Excel中的公式,你可以通过CellType类来指定单元格的数据类型,如STRING, NUMERIC, BOOLEAN, FORMULA等。 6. **事件模型(SXSSF)**:对于处理大量数据,Apache POI提供...
以上就是使用Apache POI向Excel中插入图片的详细过程。实践中,你可以根据具体需求进行调整,例如动态插入多张图片或者在循环中批量处理。熟悉这些API和步骤后,你就可以自由地操纵Excel文档,实现更多复杂的功能。
为了使用 POI 操作 Excel 文件,首先需要准备以下环境: 1. **JDK 版本**:至少需要 JDK 1.4 或更高版本。 2. **POI 库**:下载 POI 库,可以从 Apache 官方网站获取:...
为更方便的使用POI的API来操作Excel(2003)文件,对POI中针对Excel文件的读写进行了简单封装。此类中包含以下功能: 1.根据模板创建Excel文件 2.获取及更新Excel文件内容 3.创建、复制Sheet 4.设置Sheet名称 ... ...
Java POI 的主要特点是可以在 Java 应用程序中读取、写入和操作 Office 文件。 2. Java POI 的组成 Java POI 由多个组件组成,每个组件负责处理不同的 Office 文件格式。以下是 Java POI 的主要组件: * POIFS ...
使用POI操作Excel调用高德地图API操作Excel示例
这两种方法都是在Java环境中操作Excel数据的有效方式。 首先,让我们详细了解一下Apache POI库。POI提供了一个API,允许开发者在Java应用程序中创建、修改和显示Microsoft Office文档。对于Excel,它支持HSSF(处理...
在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成非常有用。 1. **Apache POI介绍** Apache POI是一个开源项目,提供了API来处理Microsoft Office格式的文件。在Java...