「java生成xls」java生成xls文件

博主:adminadmin 2022-12-24 09:21:10 76

今天给各位分享java生成xls的知识,其中也会对java生成xls文件进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

有关java生成xls文件并下载问题

Tomcat有临时目录,JSP是通过Tomcat这样的容器运行的,产生的文件都在临时目录里,除非你指定文件绝对路径。

一般,要想在指定目录里生成文件,可以用request.getRealPath("/")来取得当前项目所在的绝对地址,如E:/workspace/MyProject/WebRoot

再拼接成E:/workspace/MyProject/WebRoot/test.xls

就能在WebRoot文件夹下生成文件了

怎样在java中导出xls文件

通过这个例子,演示以下如何用java生成excel文件:

import org.apache.poi.hssf.usermodel.*;

import java.io.FileOutputStream;

import java.io.IOException;

publicclass CreateCells

{

publicstaticvoid main(String[] args)

throws IOException

{

HSSFWorkbook wb = new HSSFWorkbook();//建立新HSSFWorkbook对象

HSSFSheet sheet = wb.createSheet("new sheet");//建立新的sheet对象

// Create a row and put some cells in it. Rows are 0 based.

HSSFRow row = sheet.createRow((short)0);//建立新行

// Create a cell and put a value in it.

HSSFCell cell = row.createCell((short)0);//建立新cell

cell.setCellValue(1);//设置cell的整数类型的值

// Or do it on one line.

row.createCell((short)1).setCellValue(1.2);//设置cell浮点类型的值

row.createCell((short)2).setCellValue("test");//设置cell字符类型的值

row.createCell((short)3).setCellValue(true);//设置cell布尔类型的值

HSSFCellStyle cellStyle = wb.createCellStyle();//建立新的cell样式

cellStyle.setDataFormat(HSSFDataFormat.getFormat("m/d/yy h:mm"));//设置cell样式为定制的日期格式

HSSFCell dCell =row.createCell((short)4);

dCell.setCellValue(new Date());//设置cell为日期类型的值

dCell.setCellStyle(cellStyle); //设置该cell日期的显示格式

HSSFCell csCell =row.createCell((short)5);

csCell.setEncoding(HSSFCell.ENCODING_UTF_16);//设置cell编码解决中文高位字节截断

csCell.setCellValue("中文测试_Chinese Words Test");//设置中西文结合字符串

row.createCell((short)6).setCellType(HSSFCell.CELL_TYPE_ERROR);//建立错误cell

// Write the output to a file

FileOutputStream fileOut = new FileOutputStream("workbook.xls");

wb.write(fileOut);

fileOut.close();

}

}

从以上例子,可以清楚的看到xls文件从大到小包扩了 HSSFWorkbook HSSFSheet HSSFRow HSSFCell这样几个对象。还可以在cell中设置各种类型的值。尤其要注意的是如果你想正确的显示非欧美的字符时,尤其象中日韩这样的语言,必须 设置编码为16位的即是HSSFCell.ENCODING_UTF_16,才能保证字符的高8位不被截断而引起编码失真形成乱码。

其他测试可以通过参考examples包中的测试例子掌握poi的详细用法,包括字体的设置,cell大小和低纹的设置等。需要注意的是POI是一 个仍然在完善中的公开代码的项目,所以有些功能正在不断的扩充。如HSSFSheet的getFooter() getHeader()和 setFooter(HSSFFooter hsf) setHeader(HSSFHeader hsh)是在POI1.7中才有的,而POI1.5中就没有。运行测试熟悉代码或者使用它做项目时请注意POI的版本。

另外需要注意的是HSSF也有它的对xls基于事件的解析。可以参考例程中的EventExample.java。它通过实现 HSSFListener完成从普通流认知Xls中包含的内容,在apache Cocoon中的 org.apache.cocoon.serialization.HSSFSerializer中用到了这个解析。因为Cocoon2 是基于事件的,所以POI为了提供快速的解析也提供了相应的事件。当然我们自己也可以实现这个事件接口。

因为POI还不是一个足够成熟的项目,所以有必要做进一步的开发和测试。但是它已经为我们用纯java操作ole2对象提供了可能,而且克服了ole对象调用的缺陷,提供了服务器端的Excel解决方案。

利用Java 创建和读取Excel文档

为了保证示例程序的运行,必须安装Java 2 sdk1.4.0 和Jakarta POI,Jakarta POI的Web站点是:

示例1将演示如何利用Jakarta POI API 创建Excel 文档。

示例1程序如下:

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFCell;

import java.io.FileOutputStream;

publicclass CreateXL {

/** Excel 文件要存放的位置,假定在D盘JTest目录下*/

publicstatic String outputFile="D:/JTest/ gongye.xls";

publicstaticvoid main(String argv[])

{

try

{

// 创建新的Excel 工作簿

HSSFWorkbook workbook = new HSSFWorkbook();

// 在Excel工作簿中建一工作表,其名为缺省值

// 如要新建一名为"效益指标"的工作表,其语句为:

// HSSFSheet sheet = workbook.createSheet("效益指标");

HSSFSheet sheet = workbook.createSheet();

// 在索引0的位置创建行(最顶端的行)

HSSFRow row = sheet.createRow((short)0);

//在索引0的位置创建单元格(左上端)

HSSFCell cell = row.createCell((short) 0);

// 定义单元格为字符串类型

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

// 在单元格中输入一些内容

cell.setCellValue("增加值");

// 新建一输出文件流

FileOutputStream fOut = new FileOutputStream(outputFile);

// 把相应的Excel 工作簿存盘

workbook.write(fOut);

fOut.flush();

// 操作结束,关闭文件

fOut.close();

System.out.println("文件生成...");

}catch(Exception e) {

System.out.println("已运行 xlCreate() : " + e );

}

}

}

这里演示创建和设置字体和单元格的格式,然后再应用这些格式:

1、创建字体,设置其为红色、粗体:

HSSFFont font = workbook.createFont();

font.setColor(HSSFFont.COLOR_RED);

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

2、创建格式

HSSFCellStyle cellStyle= workbook.createCellStyle();

cellStyle.setFont(font);

3、应用格式

HSSFCell cell = row.createCell((short) 0);

cell.setCellStyle(cellStyle);

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

cell.setCellValue("标题 ");

总之,如本篇文章所演示的一样,Java程序员不必担心Excel工作表中的数据了,利用Jakarta POI API, 就可以轻易的在程序中存取Excel文档。

java如何生成excel,具体的

poi或jxl都行

你从网上下载个jxl.jar的jar包

简单说一下jxl导出excel过程

//先创建一个excel文件

String excelPath = "D:\\系统用户.xls";

File excelFile = new File(excelPath);

if (!excelFile.exists()) {

excelFile.createNewFile();

}

WritableWorkbook book = Workbook.createWorkbook(excelFile);

WritableSheet ws = book.createSheet("用户信息", 0); //新建一个sheet

---------------

//往表中添加内容

ws.addCell(WritableCell )

------------

//将数据写入所建的excel

book.write();

book.close();

java生成不规则xls相关

使用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");

ListTid 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种

//具体可以查看文档

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 (IteratorTid 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

设置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导出数据到excel的几种方法的比较

Excel的两种导出入门方法(JAVA与JS)

最近在做一个小项目作为练手,其中使用到了导出到Excel表格,一开始做的是使用JAVA的POI导出的,但因为我的数据是爬虫爬出来的,数据暂时并不保存在数据库或后台,所以直接显示在HTML的table,需要下载时又要将数据传回后台然后生成Excel文件,最后再从服务器下载到本地,过程几度经过网络传输,感觉比较耗时与浪费性能,于是想着在HTML中的Table直接导到Excel中节约资源

JAVA导出EXCEL(.xls)

导出Excel用的插件是apache的poi.jar,maven地址如下

dependency

groupIdorg.apache.poi/groupId

artifactIdpoi/artifactId

version3.17/version/dependency

1. 简单应用

先来个简化无样式的Excel导出,由于我的数据存在JSON中,所以形参是JSONArray,朋友们根据自己的实际数据类型(Map,List,Set等)传入即可 ,代码如下

/**

* 创建excel并填入数据

* @author LiQuanhui

* @date 2017年11月24日 下午5:25:13

* @param head 数据头

* @param body 主体数据

* @return HSSFWorkbook

*/

public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) {        //创建一个excel工作簿

HSSFWorkbook workbook = new HSSFWorkbook();        //创建一个sheet工作表

HSSFSheet sheet = workbook.createSheet("学生信息");

//创建第0行表头,再在这行里在创建单元格,并赋值

HSSFRow row = sheet.createRow(0);

HSSFCell cell = null;        for (int i = 0; i head.size(); i++) {

cell = row.createCell(i);

cell.setCellValue(head.getString(i));//设置值

}

//将主体数据填入Excel中

for (int i = 0, isize = body.size(); i isize; i++) {

row = sheet.createRow(i + 1);

JSONArray stuInfo = body.getJSONArray(i);            for (int j = 0, jsize = stuInfo.size(); j jsize; j++) {

cell = row.createCell(j);

cell.setCellValue(stuInfo.getString(j));//设置值

}

}        return workbook;

}

创建好Excel对象并填好值后(就是得到workbook),就是将这个对象以文件流的形式输出到本地上去,代码如下

/**

* 文件输出

* @author LiQuanhui

* @date 2017年11月24日 下午5:26:23

* @param workbook 填充好的workbook

* @param path 存放的位置

*/

public static void outFile(HSSFWorkbook workbook,String path) {

OutputStream os=null;        try {

os = new FileOutputStream(new File(path));

workbook.write(os);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}        try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}

至此Excel的导出其实已经做完了。

2. 添加样式后导出

但通常这并不能满足我们的需求,因为通常是需要设置Excel的一些样式的,如字体、居中等等,设置单元格样式主要用到这个类(HSSFCellStyle)

HSSFCellStyle cellStyle = workbook.createCellStyle();

现在说说HSSFCellStyle都能干些什么

HSSFCellStyle cellStyle = workbook.createCellStyle();//创建单元格样式对象1.设置字体

HSSFFont font = workbook.createFont();  //font.setFontHeight((short)12);//这个设置字体会很大

font.setFontHeightInPoints((short)12);//这才是我们平常在Excel设置字体的值

font.setFontName("黑体");//字体:宋体、华文行楷等等

cellStyle.setFont(font);//将该字体设置进去2.设置对齐方式

cellStyle.setAlignment(horizontalAlignment);//horizontalAlignment参考下面给出的参数

//以下是最常用的三种对齐分别是居中,居左,居右,其余的写代码的时候按提示工具查看即可

HorizontalAlignment.CENTER

HorizontalAlignment.LEFT

HorizontalAlignment.RIGHT3.设置边框

cellStyle.setBorderBottom(border); // 下边框

cellStyle.setBorderLeft(border);// 左边框

cellStyle.setBorderTop(border);// 上边框

cellStyle.setBorderRight(border);// 右边框

//border的常用参数如下

BorderStyle.NONE 无边框

BorderStyle.THIN 细边框

BorderStyle.MEDIUM 中等粗边框

BorderStyle.THICK 粗边框//其余的我也描述不清是什么形状,有兴趣的到时可以直接测试

在经过一系列的添加样式之后,最后就会给单元格设置样式

cell.setCellStyle(cellStyle);

3. 自动调整列宽

sheet.autoSizeColumn(i);//i为第几列,需要全文都单元格居中的话,需要遍历所有的列数

4. 完整的案例

public class ExcelUtils {    /**

* 创建excel并填入数据

* @author LiQuanhui

* @date 2017年11月24日 下午5:25:13

* @param head 数据头

* @param body 主体数据

* @return HSSFWorkbook

*/

public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) {

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet sheet = workbook.createSheet("学生信息");

HSSFRow row = sheet.createRow(0);

HSSFCell cell = null;

HSSFCellStyle cellStyle = workbook.createCellStyle();

setBorderStyle(cellStyle, BorderStyle.THIN);

cellStyle.setFont(setFontStyle(workbook, "黑体", (short) 14));

cellStyle.setAlignment(HorizontalAlignment.CENTER);

for (int i = 0; i head.size(); i++) {

cell = row.createCell(i);

cell.setCellValue(head.getString(i));

cell.setCellStyle(cellStyle);

}

HSSFCellStyle cellStyle2 = workbook.createCellStyle();

setBorderStyle(cellStyle2, BorderStyle.THIN);

cellStyle2.setFont(setFontStyle(workbook, "宋体", (short) 12));

cellStyle2.setAlignment(HorizontalAlignment.CENTER);        for (int i = 0, isize = body.size(); i isize; i++) {

row = sheet.createRow(i + 1);

JSONArray stuInfo = body.getJSONArray(i);            for (int j = 0, jsize = stuInfo.size(); j jsize; j++) {

cell = row.createCell(j);

cell.setCellValue(stuInfo.getString(j));

cell.setCellStyle(cellStyle2);

}

}        for (int i = 0, isize = head.size(); i isize; i++) {

sheet.autoSizeColumn(i);

}        return workbook;

}    /**

* 文件输出

* @author LiQuanhui

* @date 2017年11月24日 下午5:26:23

* @param workbook 填充好的workbook

* @param path 存放的位置

*/

public static void outFile(HSSFWorkbook workbook,String path) {

OutputStream os=null;        try {

os = new FileOutputStream(new File(path));

workbook.write(os);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}        try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}    /**

* 设置字体样式

* @author LiQuanhui

* @date 2017年11月24日 下午3:27:03

* @param workbook 工作簿

* @param name 字体类型

* @param height 字体大小

* @return HSSFFont

*/

private static HSSFFont setFontStyle(HSSFWorkbook workbook, String name, short height) {

HSSFFont font = workbook.createFont();

font.setFontHeightInPoints(height);

font.setFontName(name);        return font;

}    /**

* 设置单元格样式

* @author LiQuanhui

* @date 2017年11月24日 下午3:26:24

* @param workbook 工作簿

* @param border border样式

*/

private static void setBorderStyle(HSSFCellStyle cellStyle, BorderStyle border) {

cellStyle.setBorderBottom(border); // 下边框

cellStyle.setBorderLeft(border);// 左边框

cellStyle.setBorderTop(border);// 上边框

cellStyle.setBorderRight(border);// 右边框

}

}

POI的功能其实还是很强大的,这里只介绍了Excel的一丁点皮毛给入门的查看,如果想对Excel进行更多的设置可以查看下面的这篇文章,有着大量的使用说明。

空谷幽澜的POI使用详解

JS导出EXCEL(.xls)

java的Excel导出提供了强大的功能,但也对服务器造成了一定资源消耗,若能使用客户端的资源那真是太好了

1. 简单应用

JS的导出Excel非常简单,只需要引用Jquery和tableExport.js并设置一个属性即可

script src="%=basePath%/static/js/tableExport.js" type="text/javascript"/scriptscript type="text/javascript"

function exportExcelWithJS(){    //获取要导出Excel的表格对象并设置tableExport方法,设置导出类型type为excel

$('#tableId').tableExport({      type:'excel'

});

}/scriptbutton class="btn btn-primary"  type="button" style="float: right;" onclick="exportExcelWithJS()"下载本表格/button

JS的导出就完成了,是不是特别简单

2. 进阶应用

但上面仅仅是个简单的全表无样式的导出

这tableExport.js还有一些其他功能,忽略行,忽略列,设置样式等,属性如下

script type="text/javascript"

function exportExcelWithJS(){    //获取要导出Excel的表格对象并设置tableExport方法,设置导出类型type为excel

$('#tableId').tableExport({      type:'excel',//导出为excel

fileName:'2017工资表',//文件名

worksheetName:'11月工资',//sheet表的名字

ignoreColumn:[0,1,2],//忽略的列,从0开始算

ignoreRow:[2,4,5],//忽略的行,从0开始算

excelstyles:['text-align']//使用样式,不用填值只写属性,值读取的是html中的

});

}/script

如上既是JS的进阶导出,操作简单,容易上手

但有个弊端就是分页的情况下,只能导出分页出的数据,毕竟这就是导出HTML内TABLE有的东西,数据在数据库或后台的也就无能为力,所以这个适合的是无分页的TABLE导出

3. 额外说明

tableExport.js是gitHub上的hhurz大牛的一个开源项目,需要下载该JS的可以点击链接进入gitHub下载或在我的百度网盘下载 密码:oafu

tableExport.js不仅仅是个导出Excel的JS,他还可以导出CSV、DOC、JSON、PDF、PNG、SQL、TSV、TXT、XLS (Excel 2000 HTML format)、XLSX (Excel 2007 Office Open XML format)、XML (Excel 2003 XML Spreadsheet format)、XML (Raw xml)多种格式,具体使用可以参考hhurz的使用介绍

本人在之前找了好几个导出Excel的都有各种各样的问题(乱码,无响应,无样式),这个是目前找到最好的一个了,能解决乱码问题,能有样式,非常强大

如何导出生成excel文件 java

在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主。下面给出用java写入数据到excel表格方法:

1.添加jar文件

java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。下载地址:

2.jxl对Excel表格的认识

可以参见

3.java代码根据程序中的数据生成上述图片所示的t.xls文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

import java.io.File;

import jxl.*;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

public class Writer_excel{

public static void main(String[] args) {

//标题行

String title[]={"角色","编号","功能名称","功能描述"};

//内容

String context[][]={{"UC11","设置课程","创建课程"},

{"UC12","设置学生名单","给出与课程关联的学生名单"},

{"UC21","查看学生名单",""},

{"UC22","查看小组信息","显示助教所负责的小组列表信息"}

};

//操作执行

try {

//t.xls为要新建的文件名

WritableWorkbook book= Workbook.createWorkbook(new File("t.xls"));

//生成名为“第一页”的工作表,参数0表示这是第一页

WritableSheet sheet=book.createSheet("第一页",0);

//写入内容

for(int i=0;i4;i++) //title

sheet.addCell(new Label(i,0,title[i]));

for(int i=0;i4;i++) //context

{

for(int j=0;j3;j++)

{

sheet.addCell(new Label(j+1,i+1,context[i][j]));

}

}

sheet.addCell(new Label(0,1,"教师"));

sheet.addCell(new Label(0,3,"助教"));

/*合并单元格.合并既可以是横向的,也可以是纵向的

*WritableSheet.mergeCells(int m,int n,int p,int q); 表示由(m,n)到(p,q)的单元格组成的矩形区域合并

* */

sheet.mergeCells(0,1,0,2);

sheet.mergeCells(0,3,0,4);

//写入数据

book.write();

//关闭文件

book.close();

}

catch(Exception e) { }

}

java生成xls的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java生成xls文件、java生成xls的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。