`

JXL导出excel Output_Excl

阅读更多
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加水印.zip

    本教程将详细介绍如何使用`jxl`库在导出Excel时添加水印,以及涉及的核心类`WritableWorkbook`、`WritableSheet`和`WritableCellFormat`。 `jxl`库提供了一套完整的API来操作Excel文件,包括创建新的工作簿、添加...

    使用jxl导出Excel表的好例子

    本篇文章将深入探讨如何利用`jxl`库来创建和导出Excel表格。 首先,我们需要在项目中引入`jxl`库。如果你的项目是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    jxl导出excel

    标题中的“jxl导出excel”指的是使用JExcelApi(简称jxl)库来生成和导出Microsoft Excel格式的文件。JExcelApi是一个开源Java库,允许开发者在Java应用程序中读取、写入和修改Excel文件。这个工具类在处理大量数据...

    Java_Excel_API_jxl_.rar_excel java_java excel

    Java_Excel_API_jxl是用于处理Excel文件的一个流行库,它允许开发者以编程方式创建、读取和修改Excel文件。本篇文章将深入探讨如何使用jxl API进行Java与Excel的交互,并提供jxl.jar的下载信息。 一、jxl简介 jxl是...

    jxl导入导出excel

    四、导出Excel数据 1. **创建工作簿** 使用`Workbook.createWorkbook(File)`方法创建一个新的工作簿: ```java WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls")); ``` 2. **创建...

    JXL导出Excel数据表

    首先,我们来理解"JXL导出Excel数据表"这一主题。JXL(Java Excel API)是一个开源项目,它允许Java程序创建、修改和读取Excel文件。通过这个库,我们可以方便地在程序中动态生成Excel工作表,包括设置单元格格式、...

    jxl实现导出excel数据

    下面我们将深入探讨如何使用JXL库实现导出Excel数据。 首先,你需要在你的项目中引入JXL库。可以通过Maven或Gradle来添加依赖,如果是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    JXL导出excel的示例及文档

    在本示例中,我们将探讨如何使用JXL导出Excel以及JXL的API文档。 1. **JXL的基本用法** - **创建工作簿(Workbook)**: 使用`Workbook.createWorkbook()`方法创建一个新的Excel工作簿对象。 - **创建工作表...

    jxl导出excel文件简单示例

    标题中的“jxl导出excel文件简单示例”是指使用jxl库来创建和导出Excel文件的一个基本操作。jxl是一个Java库,它允许开发者读取、写入和修改Excel文件,尤其在处理批量数据时非常方便。在这个示例中,我们将探讨如何...

    jxl对excel添加水印(含有setWaterMarkImage方法).zip

    在Java编程环境中,处理Excel文件是一项常见的任务,特别是在数据导入导出、报表生成等领域。`jxl`库是一个广泛使用的开源库,它允许开发者用Java读取、写入和修改Excel文件。在这个特定的场景中,我们将探讨如何...

    Android-Android使用jxl快速导出excel表

    本文将详细探讨如何在Android应用中使用jxl库快速导出Excel表格。 首先,我们需要理解jxl库的基本概念。jxl是一个Java API,它支持Microsoft Excel 97-2004的文件格式(.xls)。通过jxl,我们可以创建新的工作簿、...

    利用JXL导出Excel的代码示例

    以下是一个基本的代码示例,展示了如何利用JXL导出Excel的步骤: 1. 创建工作簿对象: ```java WorkbookSettings ws = new WorkbookSettings(); // 如果需要设置编码(例如中文字符),可以这样: ws.set...

    jxl导出excel实践

    本文将深入探讨如何使用JXL库在Java中导出Excel文件,基于提供的“jxl导出excel实践”主题。 JXL库(Java Excel API)是专门用于读写Microsoft Excel文件的开源库。它支持多种操作,如创建新的工作簿,读取现有工作...

    JXL操作EXCEL 数据库导出EXCEL相关文件

    本篇文章将深入探讨JXL库在操作Excel和数据库导出Excel文件方面的应用。 首先,我们来了解JXL的基本用法。JXL支持读取和写入Biff8格式的Excel文件(即97-2003版本的.XLS文件),这涵盖了大部分常见的Excel文件需求...

    jxl导出Excel

    在Java编程中,有时我们需要将数据导出到Excel文件中,这时可以使用开源库JExcelAPI(简称jxl)。这个库允许我们方便地读取、写入和操作Excel文件,而无需依赖Microsoft Office。本文将深入探讨如何使用jxl库导出...

    jxl 实现excel导入导出

    导出Excel文件则是将数据写入到一个新的或已存在的Excel文件中。以下是一个基本的导出示例: ```java import jxl.*; import jxl.write.*; public class ExcelExporter { public static void main(String[] args) ...

    java利用jxl导出excel表格

    Java使用JXL库导出Excel表格是一个常见的任务,特别是在数据处理和报告生成的场景中。JXL是一个开源的Java库,允许我们读取、写入和修改Excel文件。以下是对这个知识点的详细解释: 首先,我们需要理解Excel文件的...

    java使用JXL导入导出excel

    Java使用JXL库进行Excel导入导出是一种常见的技术实践,特别是在需要在Java应用程序或Web应用中处理Excel数据时。JXL是一个轻量级的库,它允许开发人员以纯Java方式读取、创建和修改Excel文件,而无需依赖于Windows...

    通过JXL使用模板导出EXCEL

    本文将深入探讨如何利用JXL库通过模板来导出Excel。 首先,JXL库(Java Excel API)是一个开源的Java库,它提供了处理Microsoft Excel文件的能力。它支持读取、写入以及修改Excel 97-2004(.xls)格式的文件。虽然...

Global site tag (gtag.js) - Google Analytics