使用poi来生成xls文件:引用的包poi-3.2.final.jar;
要了解的类HSSFWorkbook,HSSFSheet,HSSFRow,HSSFCell
HSSFWorkbook workbook=new HSSFWorkbook();得到一个Excel文件的引用
HSSFSheet sheet=workbook.createSheet();得到一个sheet,还有HSSFSheet sheet=workbook.createSheet("sheet1");方法可以设置Sheet的名称。
然后我们可以得到一行HSSFRow row=sheet.createRow(rowNum);
最后我们可以得到的是HSSFCell cell=row.create(cellNum);在Cell中还有一个类型的问题,一定要注意
下面是一个从数据库里面读取数据生成文件的方法
public void testQuery() {
Transaction tx = null;
tx = session.beginTransaction();
Query query = session.createQuery("from Tid");
List<Tid> list = query.list();
tx.commit();
int k = 0;
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("sheet1");
HSSFRow row = sheet.createRow(k);
k++;
//得到一个HSSFCell对象
HSSFCell cell1 = row.createCell(0);
//首先要设置HSSFCell的类型,一共有五种CELL_TYPE_STRING,CELL_TYPE_NUMBERIC,CELL_TYPE_FORMULA,
//CELL_TYPE_BLANK,CELL_TYPE_BOOLEAN,CELL_TYPE_ERROR,共6种
//具体可以查看文档http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCell.html#getCellType()
cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
cell1.setCellValue((new HSSFRichTextString("MER_NUM")));
HSSFCell cell2 = row.createCell(1);
cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
cell2.setCellValue(new HSSFRichTextString("TML_NUM"));
HSSFCell cell3 = row.createCell(2);
cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
cell3.setCellValue(new HSSFRichTextString("COUNTER_NUM"));
for (Iterator<Tid> it = list.iterator(); it.hasNext();) {
Tid tid = (Tid) it.next();
HSSFRow row_ = sheet.createRow((short) k);
HSSFCell c1 = row_.createCell(0);
c1.setCellType(HSSFCell.CELL_TYPE_STRING);
c1.setCellValue((new HSSFRichTextString(tid.getMer_num())));
HSSFCell c2 = row_.createCell(1);
c2.setCellType(HSSFCell.CELL_TYPE_STRING);
c2.setCellValue(new HSSFRichTextString(tid.getTml_num()));
HSSFCell c3 = row_.createCell(2);
c3.setCellType(HSSFCell.CELL_TYPE_STRING);
c3.setCellValue(new HSSFRichTextString(tid.getCounter_num()));
k++;
}
//新建输出流对象FileOutputStream
FileOutputStream fos = null;
try {
fos = new FileOutputStream("D://T99_TID_RELA.xls");
//然后写入HSSFWorkbook中
workbook.write(fos);
fos.flush();
} catch (Exception e) { // TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (null != fos) {
try {
fos.close();
System.out.println("文件生成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
HSSFCell类型判断与取值的方法
public String getCellValue(HSSFCell cell)throws Exception{
int cellType=cell.getCellType();
String cellValue=null;
switch(cellType){
case HSSFCell.CELL_TYPE_NUMERIC:
cellValue = String.valueOf(cell.getNumericCellValue());
/*
*DecimalFormat df=new DecimalFormat("#");
*cellValue = df.format(cell.getNumericCellValue());
*DecimalFormat表示的数据格式化,有很多中用法
*/
break;
case HSSFCell.CELL_TYPE_FORMULA:
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cellValue = String.valueOf(cell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_BLANK:
cellValue=" ";
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
break;
case HSSFCell.CELL_TYPE_ERROR:
break;
default:
throw new IllegalArgumentException("数据格式不对");
}
return cellValue;
}
解析一个Excel文件
public void testRead() {
HSSFWorkbook workbook = null;
DecimalFormat df = new DecimalFormat("#");
try {
workbook = new HSSFWorkbook(new FileInputStream(new File(
"D://Book1.xls")));
//POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filePath));
// 获得Sheet数
System.out
.println("===SheetsNum===" + workbook.getNumberOfSheets());
// 开始读取
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
if (null != workbook.getSheetAt(i)) {
// 获得一个Sheet
HSSFSheet sheet = workbook.getSheetAt(i);
System.out.println("共有" + sheet.getLastRowNum() + "行");
for (int rowNumOfSheet = 10; rowNumOfSheet <= sheet
.getLastRowNum(); rowNumOfSheet++) {
if (null != sheet.getRow(rowNumOfSheet)) {
// 获得一个row
HSSFRow row = sheet.getRow(rowNumOfSheet);
System.out.print("第" + rowNumOfSheet + "行 ");
// System.out.print("一行有"+row.getLastCellNum()+"单元格");
for (short cellNumOfRow = 0; cellNumOfRow < row
.getLastCellNum(); cellNumOfRow++) {
HSSFCell cell = row.getCell(cellNumOfRow);
int cellType = cell.getCellType();
switch (cellType) {
case 0:// Numberic
String strCell = df.format(cell.getNumericCellValue());
System.out.print(strCell + " ");
break;
case 1:
strCell = cell.getRichStringCellValue().getString();
System.out.print(strCell + " ");
break;
default:
System.out.println("数据格式不对!");
}
}
System.out.print("/n");
}
}
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
工具集HSSFCellUtil http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/contrib/HSSFCellUtil.html
设置Sheet名称和单元格内容为中文
workbook.setSheetName(n,"库存",HSSFCell.ENCODING_UTF_16);
cell.setEncoding((short)1);cell.setCellValue("单位");
设置列宽和行高
sheet.setColumnWidth((short)column,(short)width);
row.setHeight((short)height);
添加区域,合并单元格
Region region=new Region((short)rowForm,(short)columnForm,(short)rowTo,(short)columnTo);
sheet.addMergedRegion(region);
// 得到该区域
sheet.getNumMergedRegion();
设置字体和内容位置
HSSFFont font=workbook.createFont();
font.setFontHeightInPoints((short) 11);//字号
font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗
style.setFont(font);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
style.setRotation((short)rotation);//单元格内容的旋转的角度
HSSFDataFormat df = wb.createDataFormat();
style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式
cell.setCellFormula(string);//给单元格设公式
style.setRotation((short)rotation);//单元格内容的旋转的角度
cell.setCellStyle(style)
常用的单元格边框格式
public static HSSFCellStyle getCellStyle(short type) {
HSSFWorkbook workbook =new HSSFWorkbook();
HSSFCellStyle style = wb.createCellStyle();
style.setBorderBottom(type);//下边框
style.setBorderLeft(type);//左边框
style.setBorderRight(type);//右边框
style.setBorderTop(type);//上边框
return style;
}
虚线HSSFCellStyle.BORDER_DOTTED
实线HSSFCellStyle.BORDER_THIN
最后是插入图片
/先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));
ImageIO.write(bufferImg,"jpg",byteArrayOut);
//读进一个excel模版
FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");
fs = new POIFSFileSystem(fos);
//创建一个工作薄
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);
patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));
分享到:
相关推荐
在Java编程环境中,解析XLS(Excel)文件是一项常见的任务,尤其在数据处理、报表生成或数据分析等场景中。XLS文件是Microsoft Excel早期版本(97-2003)使用的二进制文件格式,包含表格数据和样式信息。在Java中,...
这些库通常提供了对Excel文件结构的解析和构建,使得开发者无需深入了解文件格式的细节就能生成有效的XLS文件。 "example_export.php"可能是示例代码,展示了如何使用这个类将数据导出为XLS文件。这通常包括实例化...
### Java生成XLS文件知识点详解 #### 一、概述 在Java中,生成XLS文件通常需要用到Apache POI库中的HSSF组件。本篇将基于一个具体的案例来讲解如何使用Java来读取文本文件的内容,并将其转换为XLS格式。 #### 二、...
### Java操作Excel (xls)模板生成Excel (xls)方法及所需包详解 #### 一、引言 在日常开发工作中,经常会遇到需要批量处理Excel文件的需求。这些需求可能包括但不限于:根据现有数据自动生成报告、统计报表等。利用...
在Java编程中,处理Excel文件是一项常见的任务,特别是在数据分析、数据导入导出或者报表生成等场景。本示例主要关注如何使用Java来读取.xls格式的文件,这是一种Microsoft Excel的早期版本格式。以下是一个简单的...
本示例将详细解析如何利用Java来创建PPT文件,以及涉及到的关键技术和库。 首先,Java本身并不直接支持创建PPT文件,但是我们可以借助Apache POI库来实现这个功能。Apache POI是一个流行的API,它允许开发者处理...
在Android开发中,处理xls文件是一项常见的任务,特别是在数据导入导出、报表生成或数据分析等场景。xls文件是Microsoft Excel的旧版文件格式,用于存储表格数据,包括数字、文字和公式。本篇将深入探讨如何在...
在这个场景中,Java被用作开发代码生成器的基础,用于实现对Excel文件的解析和与MySQL数据库的交互。 2. **Java处理Excel文件**:Java可以使用Apache POI库来读取和操作.xls格式的Excel文件。POI是一个开源项目,...
Java POI库是一个广泛使用的开源项目,专门用于处理Microsoft Office格式的文件,包括Excel的.xls和.xlsx文件。在本示例中,我们关注的是如何利用Java POI来根据模板生成.xlsx格式的Excel文件。这个过程涉及到对...
在提供的压缩包"src"中,应包含了实现这些实例的源代码和必要的Apache POI库。开发者可以通过阅读和运行这些代码来学习如何在Java中操作Excel和XML文件。此外,理解XML Schema(XSD)和样式表语言(XSLT)也可能有助...
此jar文件提供了对OOXML文档结构的解析和生成,使得Java程序能够理解并操作xlsx格式的Excel文件。 2. xmlbeans-2.6.0.jar:XMLBeans是另一个开源项目,它将XML Schema编译成Java类,使开发人员可以直接通过对象模型...
在Java编程环境中,读取Excel(xls)文件并将其转换为Shell脚本是一种常见的数据处理需求,特别是在将数据导入数据库时。以下是一个基于给定描述的知识点详解: 1. **Java与Excel文件交互**: Java中处理Excel文件...
4. **生成Excel文件**:这里我们可以使用Apache POI库,它是一个Java API,允许我们创建、修改和显示Microsoft Office格式的文件,包括.xls。首先,添加Apache POI依赖到项目中。然后,创建HSSFWorkbook对象表示工作...
本主题将详细探讨如何使用Java的Apache POI库读取Excel文件,并利用JDOM库生成XML文件。 首先,Apache POI是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。在Java中,我们可以...
在压缩包“xls2xml-1.0.0”中,通常会包含源代码文件(可能是Java、Python、C#或其他编程语言)、文档、示例和可能的编译好的可执行文件。对于开发人员来说,通过查看源码,可以了解转换过程中的细节,例如如何使用...
- **Apache POI**: 同样是处理Excel文件的强大Java库,除了支持.xls外还支持.xlsx等新版本格式,并且提供了更多的功能,如图表、图片等复杂元素的处理。 #### 实现步骤详解 ### 步骤一:创建模型类 首先,我们...
在标题和描述中提到的“读取excel文件,生成java文件”是一个常见的开发任务,通常涉及到数据处理和代码自动化。这个过程可能包括从Excel表格中提取数据,然后根据这些数据自动生成Java源代码。以下是一些相关的知识...
对于Excel操作,Java POI提供了HSSF(对应.xls文件)和XSSF(对应.xlsx文件)两个组件,分别用于处理不同版本的Excel文件。 ### 二、显示货币格式 在使用Java POI生成Excel时,为了使数据更易读和专业,我们经常...
在Java编程环境中,Apache POI库是一个非常强大的工具,它允许开发者读取、写入和修改Microsoft Office格式的文件,包括Word(doc、docx)、Excel(xls、xlsx)以及老版本的Excel文件(slx)。这个教程将详细介绍...
标题 "上传下载Excel的Demo,java代码" 描述了这个示例项目的核心功能,即在Java环境下处理Excel文件的上传和下载操作。这通常涉及到Web应用程序中的数据导入导出功能,便于用户通过浏览器进行数据的交互。在这个项目...