import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class WriteExcel {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
private static File hasFile;
/**
* 同步操作,防止并发。
*
* @param args
* @return
* @throws IOException
* @throws RowsExceededException
* @throws WriteException
*/
public synchronized static String[] write(String[] args)
throws IOException, RowsExceededException, WriteException {
// 文件路径
// 判断文件是否存在,如果存在就不创建,追加,如果不存在则创建文件并追加。
WritableWorkbook book = Workbook.createWorkbook(getHasFile());
book.setProtected(true);
// -- 第一个参数是Sheet名,第二个参数是Sheet下标
// -- 下标是整数,只起标识作用,建立的时候会以create顺序建立,本例生成的EXCEL文件第一个Sheet是sheet1
WritableSheet sheet = book.createSheet("第一页", 1);
sheet.setColumnView(0, 20);
sheet.setColumnView(1, 20);
sheet.setColumnView(2, 5);
sheet.setColumnView(3, 20);
sheet.setColumnView(4, 20);
sheet.setColumnView(5, 20);
sheet.setColumnView(6, 20);
sheet.setColumnView(7, 20);
sheet.setColumnView(8, 20);
sheet.getSettings().setProtected(true);
sheet.getSettings().setPassword("xxxx");//设置密码
String[] title = { "支付宝交易号", "订单号", "交易总金额", "商品名称/订单名称", "商品描述/订单备注",
"买家支付宝账号", "交易状态", "sign", "交易时间" };
for (int i = 0; i < title.length; i++) {
Label lable = new Label(i, 0, title[i]);
sheet.addCell(lable);
}
// 初次创建,写入一行。
for (int i = 0; i < title.length; i++) {
Label lable = new Label(i, 1, args[i]);
sheet.addCell(lable);
}
// 每次写入数据时,写到最后一行。
book.write();
book.close();
System.out.println("写入成功");
return null;
}
/**
* 追加excel
*
* @param args
* @throws IOException
* @throws BiffException
* @throws WriteException
* @throws RowsExceededException
*/
public static void addExcel(File file, String[] args) throws BiffException,
IOException, RowsExceededException, WriteException {
Workbook book = Workbook.getWorkbook(file);
Sheet sheet = book.getSheet(0);
// 获取行
int length = sheet.getRows();
System.out.println(length);
WritableWorkbook wbook = Workbook.createWorkbook(file, book); // 根据book创建一个操作对象
WritableSheet sh = wbook.getSheet(0);// 得到一个工作对象
// 从最后一行开始加
for (int i = 0; i < args.length; i++) {
Label label = new Label(i, length, args[i]);
sh.addCell(label);
}
wbook.write();
wbook.close();
}
/**
* 判断文件是否已经写入
*
* @param filename
* @return
*/
public static boolean filecheck(String filename) {
boolean flag = false;
File file = new File(filename);
if (file.exists()) {
flag = true;
}
setHasFile(file);
return flag;
}
/**
* 不管神马类型,都转换成string
*
* @param obj
* @return
*/
public static String converToString(Object obj) {
return "";
}
public static void main(String[] args) throws RowsExceededException,
WriteException, IOException, BiffException {
String filepath = WriteExcel.class.getResource("/").getPath()
+ sdf.format(new Date()) + ".xls";
String[] str = { "20101020102032032", "2012203203232032032", "50",
"100元朗识币", "这个订单没有备注", "1234566@163.com", "STATU_SUCCESS",
"ssdhfksdhfksdjhfkshdsdlfd", sdf.format(new Date()) };
boolean has = WriteExcel.filecheck(filepath);
// 如果存在
if (has)
addExcel(getHasFile(), str);
else {
write(str);
}
}
/**
* @return the hasFile
*/
public static File getHasFile() {
return hasFile;
}
/**
* @param hasFile
* the hasFile to set
*/
public static void setHasFile(File hasFile) {
WriteExcel.hasFile = hasFile;
}
}
执行第一次,在common/classes下创建了一个yyyyMMd.xls的文件,写入2行数据。
再次执行,此文件数据追加一行。
可用来操作数据量不大的数据保存。
方便下载查看以及储存。
缺点:追加数据的时候读取原来的文件作为副本然后新建一个工作对象,数据量大会导致内存溢出。
csv也不错,可以研究一下,代码:
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
/**
* Simple demo class which uses the api to present the contents
* of an excel 97 spreadsheet as comma separated values, using a workbook
* and output stream of your choice
*/
public class CSV
{
/**
* Constructor
*
* @param w The workbook to interrogate
* @param out The output stream to which the CSV values are written
* @param encoding The encoding used by the output stream. Null or
* unrecognized values cause the encoding to default to UTF8
* @param hide Suppresses hidden cells
* @exception java.io.IOException
*/
public CSV(Workbook w, OutputStream out, String encoding, boolean hide)
throws IOException
{
if (encoding == null || !encoding.equals("UnicodeBig"))
{
encoding = "UTF8";
}
try
{
OutputStreamWriter osw = new OutputStreamWriter(out, encoding);
BufferedWriter bw = new BufferedWriter(osw);
for (int sheet = 0; sheet < w.getNumberOfSheets(); sheet++)
{
Sheet s = w.getSheet(sheet);
if (!(hide && s.getSettings().isHidden()))
{
bw.write("*** " + s.getName() + " ****");
bw.newLine();
Cell[] row = null;
for (int i = 0 ; i < s.getRows() ; i++)
{
row = s.getRow(i);
if (row.length > 0)
{
if (!(hide && row[0].isHidden()))
{
bw.write(row[0].getContents());
// Java 1.4 code to handle embedded commas
// bw.write("\"" + row[0].getContents().replaceAll("\"","\"\"") + "\"");
}
for (int j = 1; j < row.length; j++)
{
bw.write(',');
if (!(hide && row[j].isHidden()))
{
bw.write(row[j].getContents());
// Java 1.4 code to handle embedded quotes
// bw.write("\"" + row[j].getContents().replaceAll("\"","\"\"") + "\"");
}
}
}
bw.newLine();
}
}
}
bw.flush();
bw.close();
}
catch (UnsupportedEncodingException e)
{
System.err.println(e.toString());
}
}
}
分享到:
相关推荐
在这个示例中,我们将深入探讨如何使用JXL进行Excel文件的读写操作。 首先,你需要在项目中引入JXL库。`jxl.jar`文件是JXL库的二进制文件,包含了所有必需的类和方法。将这个JAR文件添加到你的项目的类路径中,就...
在这个"JXL读写Excel小例子"中,我们将深入探讨如何使用JXL库来操作Excel数据。 首先,为了开始使用JXL,你需要将其添加到你的项目依赖中。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml ...
Java Excel API(简称JXL)是一个开源库,用于在...总的来说,JXL为Java和Android开发者提供了一个强大的工具,用于处理Excel数据。通过理解和掌握JXL的使用,你可以更有效地在安卓应用中进行数据的导入导出和分析。
JXL库提供了方便的API,使得开发者可以轻松地处理Excel数据,包括读取单元格内容、修改工作表、添加公式,以及本文重点讨论的——插入和输出图片。 **一、JXL库介绍** JXL是一个开源的Java库,专门用于处理Excel...
在"JXL读写Excel例子demo"中,我们将探讨如何利用JXL库来处理Excel数据。这个示例程序包含了一个名为"Jxl读写Excel例子demo.jxl.jar"的库文件,它是JXL库的实现,可以集成到Java项目中以处理Excel文件。 JXL库提供...
这个库使得在Java应用程序中处理Excel数据变得简单,而无需依赖于Microsoft Office。以下是对JXL库在进行Excel读写操作时的一些关键知识点的详细解释: 1. **安装与引入** 首先,你需要将JXL库添加到你的项目类...
使用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。
本文将详细介绍如何使用jxl库进行Excel文件的读写操作,以及适合初学者的关键知识点。 ### 1. jxl库介绍 jxl库是一个Java库,它提供了API来读取、修改和创建Excel工作簿。jxl支持Excel 97-2003格式(.xls),但不...
在IT行业中,处理数据是日常任务之一,而Excel作为广泛使用的电子表格工具,常常...理解并熟练掌握这些库,将极大地提升你在处理Excel数据时的效率。在实际项目中,根据具体需求和性能考虑,可以选择适合的库进行操作。
本篇将详细介绍如何使用JXL进行Excel的读写操作,并提供一个在MyEclipse环境中可以直接运行的示例代码。 首先,你需要在项目中引入JXL库。如果你使用Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
JXL库是Java平台上用于处理Microsoft Excel文件的一个开源工具,它允许开发者在Java应用程序中方便地读取和写入Excel数据。本篇将详细介绍JXL API的使用,帮助你理解如何通过JXL来操作Excel文件。 1. **JXL简介** ...
本示例“Jxl读写Excel例子demo(2)”将详细解释如何利用jxl.jar库进行Excel文件的操作。 首先,我们需要理解Jxl库的核心概念。Jxl提供了对Excel文件格式的全面支持,包括单元格类型(文本、数字、日期等)、样式...
总之,这个工具结合了Java的基础IO操作和JXL库,实现了自动化处理Excel数据并替换文件中的国际化键值,对于软件开发过程中的国际化维护具有很高的实用价值。了解并掌握这些技术,对于提升Java开发能力至关重要。
`jxl`是一个开源库,它允许Java应用程序以读写方式与Microsoft Excel文件进行交互。这个文档将详细介绍使用`jxl`库进行Excel文件操作的一些常见方法和技巧。 首先,安装`jxl`库非常简单,只需将`jxl.jar`文件添加到...
在Java编程环境中,我们经常需要处理数据的导入和导出,Excel作为一种常见的数据存储和展示格式,被广泛应用。`jxl`库是一个流行的Java库,它允许开发者读取、写入和修改Excel文件。本教程将详细介绍如何使用`jxl`库...
一旦JXL库被正确引入,你可以创建一个`Workbook`对象来表示Excel工作簿,接着创建`Sheet`对象表示工作表,最后创建`Cell`对象来填充数据。以下是一个简单的示例: ```java import jxl.*; public class ...
jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程 jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程
下面我们将深入探讨如何使用JXL库实现导出Excel数据。 首先,你需要在你的项目中引入JXL库。可以通过Maven或Gradle来添加依赖,如果是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
在Java编程环境中,有时我们需要处理Excel文件,例如读取、修改或分析数据。"使用jxl读取Excel表格数据"这个主题就是关于如何利用jxl库来...通过熟练掌握jxl,你可以高效地在Java程序中与Excel数据交互,提升工作效率。
本文将详细介绍如何使用JXL库来读取Excel数据,并通过一个实际的代码示例进行演示。 首先,你需要在项目中引入JXL库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...