package com.wangl.util;
import java.io.File;
import java.util.List;
import java.util.Map;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class ExcelUtil {
/**
* @param filePath 文件全路径+文件名
* @param columnKey 列的key对应数据的key
* @param columnValue 列名
* @param dataList 数据集
* @param columnWidth 列宽
* @param pageSum 分页每页数量
* @return
*/
public static boolean createExcel(String filePath, String[] columnKey, String[] columnValue,
List> dataList, int columnWidth, int pageSum) {
if (null == dataList || null == filePath || null == columnKey || null == columnValue) {
return false;
}
WritableWorkbook book = null;
try {
// 数据行数
int dataSize = dataList.size();
// 每五万为一个sheet页,总sheet页数
int sheetsize = (dataSize / pageSum) == 0 ? 1 : (dataSize % pageSum > 0 ? (dataSize / pageSum + 1)
: dataSize / pageSum);
book = Workbook.createWorkbook(new File(filePath));
// 生成名为“第一页”的工作表,参数0表示这是第一页
WritableSheet sheet = null;
// 循环sheet页
for (int sheetIndex = 1; sheetIndex sheet = book.createSheet(" 第" + sheetIndex + "页 ", sheetIndex - 1);
// 生成标题
createTitle(sheet, columnValue, columnWidth);
// 行数
int count = getColumnCount(pageSum, dataSize, sheetsize, sheetIndex);
// 生成行数据
creatClumnData(columnKey, dataList, pageSum, sheet, sheetIndex, count);
}
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
try {
book.write();
book.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
}
/**
* 生成行数据
* @param columnKey 列的key
* @param dataList 数据集合
* @param pageSum 分页数
* @param sheet sheet对象
* @param sheetIndex sheet页序号
* @param count 行数
* @throws Exception
*/
private static void creatClumnData(String[] columnKey, List> dataList, int pageSum,
WritableSheet sheet, int sheetIndex, int count) throws Exception {
// 生数据行
for (int i = 0; i Label column = null;
// 生成数据列
for (int j = 0, size = columnKey.length; j // 设置单元格
WritableCellFormat format1 = new WritableCellFormat();
// 水平居左
format1.setAlignment(jxl.format.Alignment.LEFT);
// 数据序号
int dataIndex = pageSum * (sheetIndex - 1) + i;
// 列 行 数据 单元格样式
column = new Label(j, (i + 1), dataList.get(dataIndex).get(columnKey[j]) == null ? ""
: dataList.get(dataIndex).get(columnKey[j]).toString(), format1);
// 行数据生成
sheet.addCell(column);
}
}
}
/**
* 获取行数
*
* @param pageSum 总页数
* @param dataSize 数据总数
* @param sheetsize sheet总数
* @param sheetIndex sheet页序号
* @return
*/
private static int getColumnCount(int pageSum, int dataSize, int sheetsize, int sheetIndex) {
int count = 0;
// 行数量
if (sheetsize == 1) {
count = dataSize;
}
else if (sheetsize == sheetIndex && sheetsize != 1) {
count = dataSize - pageSum * (sheetsize - 1);
}
else {
count = pageSum;
}
return count;
}
/**
* 生成sheet页的标题
*
* @param sheet sheet页对象
* @param columnKey 列的key
* @param columnValue 列名
* @param columnWidth 列宽
* @throws Exception
*/
public static void createTitle(WritableSheet sheet, String[] columnValue, int columnWidth)
throws Exception {
// 生成标题行
Label title = null;
for (int i = 0, count = columnValue.length; i // 字体处理start 字体名称,字号,样式
WritableFont font1 = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD);
WritableCellFormat format1 = new WritableCellFormat(font1);
// 水平居中
format1.setAlignment(jxl.format.Alignment.CENTRE);
// 把垂直对齐方式指定为居中
format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
// end
// 设置宽度i:哪列,columnWidth:宽度
sheet.setColumnView(i, columnWidth);
title = new Label(i, 0, columnValue[i], format1);
sheet.addCell(title);
}
}
}
测试写excel:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.wangl.util.ExcelUtil;
// 生成Excel的类
public class CreateExcel {
public static void main(String args[]) {
Long startTime = System.currentTimeMillis();
String filePath = "D:\\批量卡信息详单.xls";
String[] columnKey = { "id", "password" };
String[] columnValue = { "卡号", "卡密码" };
int cardSum = 100000;
List<Map<String, Object>> dataList = new ArrayList<Map<String,Object>>();
Map<String, Object> param = null;
for(int i=0;i<cardSum;i++){
param = new HashMap<String, Object>();
param.put("id", "20121102-"+(i+1));
param.put("password", "password-"+(i+1));
dataList.add(param);
}
Long dataEnd = System.currentTimeMillis();
// TODO
System.out.println("数据用时"+(dataEnd - startTime) );
// 生成
ExcelUtil.createExcel(filePath, columnKey, columnValue, dataList, 20, 50000);
Long endTime = System.currentTimeMillis();
// 时间
System.out.println("生成excel用时:"+(endTime-dataEnd));
}
}
测试读取excel
package com.wangl.test;
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class ReadExcel {
/**
* @param args
* @throws IOException
* @throws BiffException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String filePath = "D:\\批量卡信息详单.xls";
Workbook book = Workbook.getWorkbook(new File(filePath));
Sheet[] sheetArray = book.getSheets();
for(int i=0,count=sheetArray.length;i<count;i++){
int rows = sheetArray[i].getRows();
int columns = sheetArray[i].getColumns();
System.out.println("第"+(i+1)+"页 ,,,行:"+rows+"列:"+columns);
for(int rowIndex = 0;rowIndex<rows;rowIndex++){
for(int columnIndex = 0;columnIndex<columns;columnIndex++){
Cell cell = sheetArray[i].getCell(columnIndex, rowIndex);
System.out.print(" "+cell.getContents());
}
System.out.println();
}
}
}
}
分享到:
相关推荐
读取Excel文件同样简单。以下代码演示了如何打开一个已存在的Excel文件并读取其内容: ```java import jxl.Workbook; import jxl.Sheet; import jxl.Cell; import jxl.read.biff.BiffException; import java.io....
读取Excel文件: 1. 创建一个`Workbook`对象:这是JXL中的核心类,代表整个Excel工作簿。你可以通过`Workbook.getWorkbook(File)`方法打开一个现有的Excel文件。 ```java File excelFile = new File("path_to_your_...
标题 "JXL 读取EXCEL" 涉及到的是使用Java Excel Library(简称JXL)这个开源库来处理Microsoft Excel文件。JXL是一个强大的工具,它允许开发者在Java程序中读取、写入和修改Excel文件。下面将详细介绍JXL库以及如何...
使用JXL,我们可以读取Excel文件中的数据,包括文本、数字、日期等。以下是一个简单的示例,展示如何读取Excel文件: ```java WritableWorkbook workbook = Workbook.getWorkbook(new File("input.xls")); Sheet ...
NULL 博文链接:https://zhouyq.iteye.com/blog/272883
在"JXL读写Excel例子demo"中,我们将探讨如何利用JXL库来处理Excel数据。这个示例程序包含了一个名为"Jxl读写Excel例子demo.jxl.jar"的库文件,它是JXL库的实现,可以集成到Java项目中以处理Excel文件。 JXL库提供...
以下是一个使用JXL读取Excel文件的示例: ```java import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write....
在Android开发中,JXL可以帮助我们创建、更新或读取Excel文件,这对于数据存储、报告生成或测试自动化等场景非常有用。 在描述中提到,由于作者正在从事安卓测试工作,所以回顾并使用了JXL。尽管Android原生并不...
"使用jxl读取Excel表格数据"这个主题就是关于如何利用jxl库来实现这一目标。jxl是一个开源的Java库,它提供了对Microsoft Excel文件格式的支持,使得在Java中操作Excel变得简单。 首先,你需要获取jxl的jar包。由于...
在这个"jxl读取excel的java代码小程序"中,我们将探讨如何利用JXL库来实现Excel文件的读取操作。 首先,我们需要在项目中引入JXL库。如果使用Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
本示例“Jxl读写Excel例子demo(2)”将详细解释如何利用jxl.jar库进行Excel文件的操作。 首先,我们需要理解Jxl库的核心概念。Jxl提供了对Excel文件格式的全面支持,包括单元格类型(文本、数字、日期等)、样式...
使用`jxl`库读取Excel文件主要涉及以下步骤: 1. **导入必要的库**:在Java源代码中,你需要导入`jxl`相关的包。例如: ```java import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; ...
标题中的“jxl读取Excel报表”指的是利用jxl库来操作Excel文件,特别是从Excel文件中提取数据以进行分析或进一步处理。以下是对这个主题的详细讲解: 首先,`jxl.jar`是jxl库的主要组件,它支持读取和写入Microsoft...
2. **读取Excel文件** 使用`Workbook`类来打开Excel文件。以下是一个基本示例: ```java Workbook workbook = Workbook.getWorkbook(new File("yourfile.xls")); Sheet sheet = workbook.getSheet(0); // 获取第...
本文将详细介绍如何使用JXL库来读取Excel数据,并通过一个实际的代码示例进行演示。 首先,你需要在项目中引入JXL库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
使用jxl,读写excel数据进数据库的例子。 需要jxl.jar、poi-2.0-final-20040126.jar、mysql-connector-java-3.0.8-stable-bin.jar、jakarta-poi-1.5.1-final-20020615.jar。
Java编程语言提供了多种库来处理Excel文件,其中jxl是一个广泛使用的开源库,它使得在Java应用程序中读取和写入Excel文件变得简单。本文将详细介绍如何使用jxl库进行Excel文件的读写操作,以及适合初学者的关键知识...
在给定的标题和描述中,"jsp+jspsmart上传+poi3.8读取excel2007+jxl读取excel2003" 提到了一种结合Java Web技术实现文件上传,并通过不同库解析Excel文件的解决方案。这里我们将详细探讨涉及的各个知识点。 首先,`...
本篇将详细介绍如何利用jxl库读取Excel文件,并提供一个完整的代码示例。 首先,jxl库提供了一个方便的API,让我们能够轻松地与Excel文件交互。要使用jxl,你需要下载jxl.jar文件,并将其添加到你的项目类路径中。...
本主题将详细讲解如何使用Apache POI和JExcelApi(JXL)这两个Java库来读取Excel文件,以及提供的工具类`PoiUtil.java`和`JxlUtil.java`的使用方法。 Apache POI是一个流行的开源库,它允许开发者创建、修改和显示...