import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class Excel {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 设置excel工作表的将要显示的列标题
String[] title = { "项目编号", "项目名称", "项目成本(万元)", "项目收益", "结项日期",
"项目实施地点", "是否外包" };
try {
//根据时间给生成的EXCEL文件命名
SimpleDateFormat sdf_hms = new SimpleDateFormat("yyyyMMddHHmmss");
String filename = sdf_hms.format(new Date());
String filePath = "c:\\" + filename + ".xls";
// 创建Excel工作薄
WritableWorkbook wwb;
OutputStream os = new FileOutputStream(filePath);
wwb = Workbook.createWorkbook(os);
// 添加第一个工作表并设置第一个Sheet的名字
WritableSheet sheet = wwb.createSheet("2009年项目清单列表", 0);
/*
* 通过web.getSheet(0)获得第一个sheet
* CellFormat cf = wwb.getSheet(0).getCell(1, 0).getCellFormat();
* */
Label label;
//将列标题循环添加到Label中
for (int i = 0; i < title.length; i++) {
label = new Label(i, 0, title[i]);
sheet.addCell(label);
}
// 下面是填充数据
/*
* 保存数字到单元格,需要使用jxl.write.Number
* 必须使用其完整路径,否则会出现错误
* */
// 填充项目编号
jxl.write.Number number = new jxl.write.Number(0, 1, 20090113);
sheet.addCell(number);
label = new Label(1, 1, "某公司财务系统");
sheet.addCell(label);
/*
* 定义对于显示金额的公共格式
* jxl会自动实现四舍五入
* 例如 12.456会被格式化为12.46,12.454会被格式化为12.45
* */
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(
nf);
jxl.write.Number nb = new jxl.write.Number(2, 1, 12.45, wcf);
sheet.addCell(nb);
// 填充产品数量
jxl.write.Number numb = new jxl.write.Number(3, 1, 20000);
sheet.addCell(numb);
/* 填充出产日期
* 定义显示日期的公共格式
* 如:yyyy-MM-dd hh:mm
* */
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String newdate = sdf.format(new Date());
label = new Label(4, 1, newdate);
sheet.addCell(label);
label = new Label(5, 1, "陕西西安");
sheet.addCell(label);
/*
* 显示布尔值
* */
jxl.write.Boolean bool = new jxl.write.Boolean(6, 1, true);
sheet.addCell(bool);
WritableCellFormat wc = new WritableCellFormat();
// 设置居中
wc.setAlignment(Alignment.CENTRE);
// 设置边框线
wc.setBorder(Border.ALL, BorderLineStyle.THIN);
// 设置单元格的背景颜色
wc.setBackground(jxl.format.Colour.YELLOW);
/*
* 合并单元格
* 通过writablesheet.mergeCells(int x,int y,int m,int n);来实现的
* 表示将从第x+1列,y+1行到m+1列,n+1行合并
*
* */
wwb.write();
wwb.close();
} catch (Exception e) {
System.out.println("---出现异常---");
e.printStackTrace();
}
}
public void exportExcel(List list, String fileName,
HttpServletResponse response) {
try {
//list为要打印的数据,fileName为要打印文件的名称
response.setContentType("application/x-msdownload");
//获得当前系统时间
String time = (new Timestamp(System.currentTimeMillis()))
.toString().substring(2, 10);
//获得导出文件的名称
String dispposition = "=?UTF-8?Q?attachment; fileName="
+ URLEncoder.encode(fileName, "UTF-8") + time + ".xls";
response.setHeader("Content-Disposition", dispposition);//设置文件的名称
OutputStream os = response.getOutputStream();
WritableWorkbook wwb = Workbook.createWorkbook(os);//WritableWorkbook可写的Excel工作簿
WritableSheet ws = wwb.createSheet(fileName, 0);//WritableSheet工作簿内的可写工作表
//WritableFont可以设定字体信息
//第一个参数代表字体类型,第二个代表字体大小,第三个代表是否粗体,第四个代表是否斜体,第五个代表是否需要下划线,第六个代表字体的颜色
WritableFont wf = new WritableFont(WritableFont.ARIAL, 12,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.BLACK); //获得第一行标题样式
WritableFont wf1 = new WritableFont(WritableFont.ARIAL, 10,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.BLACK);//获得除第一行的所有数据样式
//WritableCellFormat设定单元格的格式化信息
WritableCellFormat wcfF = new WritableCellFormat();
wcfF = new WritableCellFormat(wf);
WritableCellFormat wcfF1 = new WritableCellFormat();
wcfF1 = new WritableCellFormat(wf1);
//设置行,列的宽度
List minList = (List) list.get(0);
for (int nB = 0; nB < minList.size(); nB++) {
String max = "";
for (int nI = 0; nI < list.size(); nI++) {
//Object minList1 = (Object) list.get(nI);
//String value = String.valueOf(minList1.get(nB).toString());
String value = String
.valueOf(((List) list.get(nI)).get(nB));
if (!value.equals("null")) {
if (max.length() < value.length()) {
max = value;
}
}
}
//int countLength = max.length();
byte[] countLength = max.getBytes();
ws.setColumnView(nB, countLength.length + 5);//设置行的宽度
}
for (int nB = 0; nB < list.size(); nB++) {
ws.setRowView(nB, 300);//设置行的高度
}
int countField = minList.size();//获得list中的字段数
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < countField; j++) {
//Label内容为字符类型的Cell,可读可写
Label labelC;
String value = String.valueOf(((List) list.get(i)).get(j));
if (i == 0) {
if (value.equals("null")) {
labelC = new Label(j, i, "", wcfF);
} else {
labelC = new Label(j, i, ((List) list.get(i))
.get(j).toString().trim(), wcfF);
}
} else {
if (value.equals("null")) {
labelC = new Label(j, i, "", wcfF1);
} else {
labelC = new Label(j, i, ((List) list.get(i))
.get(j).toString().trim(), wcfF1);
}
}
//第一个是代表列数,第二是代表行数,第三个代表要写入的内容,第四个是可选项,是输入这个label里面的样式
ws.addCell(labelC);
}
}
wwb.write();
//关闭Excel工作薄对象
wwb.close();
os.close();
} catch (Exception e) {
//System.out.println("失败");
}
}
}
分享到:
相关推荐
本教程将详细介绍如何使用`jxl`库在导出Excel时添加水印,以及涉及的核心类`WritableWorkbook`、`WritableSheet`和`WritableCellFormat`。 `jxl`库提供了一套完整的API来操作Excel文件,包括创建新的工作簿、添加...
本篇文章将深入探讨如何利用`jxl`库来创建和导出Excel表格。 首先,我们需要在项目中引入`jxl`库。如果你的项目是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
标题中的“jxl导出excel”指的是使用JExcelApi(简称jxl)库来生成和导出Microsoft Excel格式的文件。JExcelApi是一个开源Java库,允许开发者在Java应用程序中读取、写入和修改Excel文件。这个工具类在处理大量数据...
Java_Excel_API_jxl是用于处理Excel文件的一个流行库,它允许开发者以编程方式创建、读取和修改Excel文件。本篇文章将深入探讨如何使用jxl API进行Java与Excel的交互,并提供jxl.jar的下载信息。 一、jxl简介 jxl是...
四、导出Excel数据 1. **创建工作簿** 使用`Workbook.createWorkbook(File)`方法创建一个新的工作簿: ```java WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls")); ``` 2. **创建...
首先,我们来理解"JXL导出Excel数据表"这一主题。JXL(Java Excel API)是一个开源项目,它允许Java程序创建、修改和读取Excel文件。通过这个库,我们可以方便地在程序中动态生成Excel工作表,包括设置单元格格式、...
下面我们将深入探讨如何使用JXL库实现导出Excel数据。 首先,你需要在你的项目中引入JXL库。可以通过Maven或Gradle来添加依赖,如果是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
在本示例中,我们将探讨如何使用JXL导出Excel以及JXL的API文档。 1. **JXL的基本用法** - **创建工作簿(Workbook)**: 使用`Workbook.createWorkbook()`方法创建一个新的Excel工作簿对象。 - **创建工作表...
标题中的“jxl导出excel文件简单示例”是指使用jxl库来创建和导出Excel文件的一个基本操作。jxl是一个Java库,它允许开发者读取、写入和修改Excel文件,尤其在处理批量数据时非常方便。在这个示例中,我们将探讨如何...
在Java编程环境中,处理Excel文件是一项常见的任务,特别是在数据导入导出、报表生成等领域。`jxl`库是一个广泛使用的开源库,它允许开发者用Java读取、写入和修改Excel文件。在这个特定的场景中,我们将探讨如何...
本文将详细探讨如何在Android应用中使用jxl库快速导出Excel表格。 首先,我们需要理解jxl库的基本概念。jxl是一个Java API,它支持Microsoft Excel 97-2004的文件格式(.xls)。通过jxl,我们可以创建新的工作簿、...
以下是一个基本的代码示例,展示了如何利用JXL导出Excel的步骤: 1. 创建工作簿对象: ```java WorkbookSettings ws = new WorkbookSettings(); // 如果需要设置编码(例如中文字符),可以这样: ws.set...
本文将深入探讨如何使用JXL库在Java中导出Excel文件,基于提供的“jxl导出excel实践”主题。 JXL库(Java Excel API)是专门用于读写Microsoft Excel文件的开源库。它支持多种操作,如创建新的工作簿,读取现有工作...
本篇文章将深入探讨JXL库在操作Excel和数据库导出Excel文件方面的应用。 首先,我们来了解JXL的基本用法。JXL支持读取和写入Biff8格式的Excel文件(即97-2003版本的.XLS文件),这涵盖了大部分常见的Excel文件需求...
在Java编程中,有时我们需要将数据导出到Excel文件中,这时可以使用开源库JExcelAPI(简称jxl)。这个库允许我们方便地读取、写入和操作Excel文件,而无需依赖Microsoft Office。本文将深入探讨如何使用jxl库导出...
导出Excel文件则是将数据写入到一个新的或已存在的Excel文件中。以下是一个基本的导出示例: ```java import jxl.*; import jxl.write.*; public class ExcelExporter { public static void main(String[] args) ...
Java使用JXL库导出Excel表格是一个常见的任务,特别是在数据处理和报告生成的场景中。JXL是一个开源的Java库,允许我们读取、写入和修改Excel文件。以下是对这个知识点的详细解释: 首先,我们需要理解Excel文件的...
Java使用JXL库进行Excel导入导出是一种常见的技术实践,特别是在需要在Java应用程序或Web应用中处理Excel数据时。JXL是一个轻量级的库,它允许开发人员以纯Java方式读取、创建和修改Excel文件,而无需依赖于Windows...
本文将深入探讨如何利用JXL库通过模板来导出Excel。 首先,JXL库(Java Excel API)是一个开源的Java库,它提供了处理Microsoft Excel文件的能力。它支持读取、写入以及修改Excel 97-2004(.xls)格式的文件。虽然...