依赖

 <dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>

  

XLS

package export;

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook; public class XLSUtil implements Serializable { public static boolean createXls(String tableName,List<Object> head, List<List<Object>> dataList,
String outPutPath, String filename){
WritableWorkbook book = null;
try {
String filePath = outPutPath+filename+".xls";
XLSUtil.checkFile(filePath);
// 打开文件
book = Workbook.createWorkbook(new File(filePath));
WritableSheet sheet = book.createSheet(filename, );
if(head!=null&&head.size()>){
for (int i = ; i < head.size(); i++) {
Label label = new Label(i, , (String) head.get(i));
// 将定义好的单元格添加到工作表中
sheet.addCell(label);
}
}
if(dataList!=null&&dataList.size()>){
for (int i = ; i < dataList.size(); i++) {
List<Object> list = dataList.get(i);
// 保存数字的单元格必须使用Number的完整包路径
for (int j = ; j < list.size(); j++) {
Label label = new Label(j, i+, (String) list.get(j));
sheet.addCell(label);
}
}
}
// 写入数据并关闭文件
book.write();
} catch (Exception e) {
System.out.println(e);
}finally{
if(book!=null){
try {
book.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return true;
} public static void checkFile(String filename) {
File file = new File(filename);
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
} } public static void main(String[] args) { String tableName = "学生";
List<Object> head = new ArrayList<Object>();
head.add("你好");
head.add("我好");
head.add("大家好"); List<List<Object>> dataList = new ArrayList<List<Object>>();
List<Object> head1 = new ArrayList<Object>();
head1.add("");
head1.add("");
head1.add(""); dataList.add(head1);
dataList.add(head1);
dataList.add(head1); String filename = "我的文件";
String outPutPath = "F:/test/aqa/"; XLSUtil.createXls(tableName, head, dataList, outPutPath, filename);
// XLSUtil.xlsExport(tableName , head , dataList, outPutPath , filename );
}
}

csv

package export;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; public class CSVUtil implements Serializable {
/**
* CSV文件生成方法
* @param head
* @param dataList
* @param outPutPath
* @param filename
* @return
*/
public static File createCSVFile(List<Object> head, List<List<Object>> dataList,
String outPutPath, String filename) {
File csvFile = null;
BufferedWriter csvWtriter = null;
try {
csvFile = new File(outPutPath + File.separator + filename + ".csv");
System.out.println(File.separator);
File parent = csvFile.getParentFile();
if (parent != null && !parent.exists()) {
parent.mkdirs();
}
csvFile.createNewFile();
csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream( csvFile)));
// 写入文件头部
writeRow(head, csvWtriter);
// 写入文件内容
for (List<Object> row : dataList) {
writeRow(row, csvWtriter);
}
csvWtriter.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
csvWtriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return csvFile;
} /**
* 写一行数据方法
* @param row
* @param csvWriter
* @throws IOException
*/
private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException {
// 写入文件头部
for (Object data : row) {
StringBuffer sb = new StringBuffer();
String rowStr = sb.append("\"").append(data).append("\",").toString();
csvWriter.write(rowStr);
}
csvWriter.newLine();
} public static void main(String[] args) {
List<Object> exportData = new ArrayList<Object>();
exportData.add("第一列");
exportData.add("第二列");
exportData.add("第三列");
List<List<Object>> datalist = new ArrayList<List<Object>>();
List<Object> data=new ArrayList<Object>();
data.add("111");
data.add("222");
data.add("333");
List<Object> data1=new ArrayList<Object>();
data1.add("444");
data1.add("555");
data1.add("666");
datalist.add(data);
datalist.add(data1);
String path = "d:/export/";
String fileName = "文件导出"; File file = CSVUtil.createCSVFile(exportData, datalist, path, fileName);
String fileName2 = file.getName();
System.out.println("文件名称:" + fileName2);
}
}

excel导入导出的两种方式:csv和XLS的更多相关文章

  1. Spark:DataFrame批量导入Hbase的两种方式(HFile、Hive)

    Spark处理后的结果数据resultDataFrame可以有多种存储介质,比较常见是存储为文件.关系型数据库,非关系行数据库. 各种方式有各自的特点,对于海量数据而言,如果想要达到实时查询的目的,使 ...

  2. Hive数据导入导出的几种方式

    一,Hive数据导入的几种方式 首先列出讲述下面几种导入方式的数据和hive表. 导入: 本地文件导入到Hive表: Hive表导入到Hive表; HDFS文件导入到Hive表; 创建表的过程中从其他 ...

  3. Hive数据导入导出的n种方式

    Tutorial-LoadingData Hive加载数据的6种方式 #格式 load data [local] inpath '/op/datas/xxx.txt' [overwrite] into ...

  4. oracle数据的导入导出(两种方法三种方式)

    大概了解数据库中数据的导入导出.在oracle中,导入导出数据的方法有两种,一种是使用cmd命令行的形式导入导出数据,另一种是使用PL/SQL工具导入导出数据. 1,使用cmd命令行导入导出数据 1. ...

  5. Python3 动态导入模块的两种方式

    动态导入模块就是只知道str类型的模块名字符串,通过这个字符串导入模块 需要导入的模块: #!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author:C ...

  6. python导入模块的两种方式

    第一种 from support import * 这种方式导入后可以直接调用(有命名冲突问题)命名冲突后定义的覆盖前定义的 如果在函数导入前定义 则导入函数覆盖 否则相反 if __name__ = ...

  7. C++ DLL导出的两种方式和链接的两种方式

    第一种 导出方式 extern "C" _declspec(dllexport) int Plus(int x, int y); extern "C" _dec ...

  8. android studio导入jar的两种方式

    一.第一种是打开工程所在Project Structure,然后选择Dependencies,点击那个加号选择File Dependency ,然后再Libs文件夹中选择要导入的jar包 1. 2. ...

  9. Excel文件读取的两种方式

    1.Pandas库的读取操作 from pandas import read_excel dr=read_excel(filename,header) dr#dataframe数据 dw=DataFr ...

随机推荐

  1. 黄聪:jquery+Datatables出现数据过长,表格不自动换行,columns设置width失效的办法

    添加下面的CSS代码即可: table.dataTable.nowrap th, table.dataTable.nowrap td{white-space: normal !important;}

  2. 在已有Windows系统基础上安装ubuntu后无Windows启动项

    1. 原系统为windows 2. 清出一个不用的分区给linux,使用windows磁盘管理器将该分区重新划分为两个分区,分别用于root和swap 3. 安装过程中ubuntu提示原系统为非UEF ...

  3. 导入数据库时出现ORA-01435: 用户不存在

    报错信息: IMP-00003: 遇到 ORACLE 错误 1435 ORA-01435: 用户不存在 成功终止导入,但出现警告. 我的导入脚本为: imp system/*****@min file ...

  4. windows 下跟踪日志的几个工具总结

    1.baretailpro.exe 2.wintail.exe 3.vim(using tail bundle plugin) 4.Notepad++ (Plugin->Plugin Manag ...

  5. sql脚本长度限制及linux下文件切分

    无意翻出以前笔记,切分sql文件,每10万条加一个commit.半天都想不起来应用的场景,能想起来的再加上查的资料记录一下. 在Oracle数据库中,频繁的commit会引起大量Redo Log的物理 ...

  6. tf.nn.dropout

    tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None) 此函数是为了防止在训练中过拟合的操作,将训练输出按一定规则进行变 ...

  7. 高通平台读写nv总结

    一,引言      1. 什么是NV       高通平台的NV,保存了系统运行过程中各个模块可能用到的一些参数值,它是以单个文件的形式保存在EFS中,但用户是不能随意访问的,只能通过QXDM来进行读 ...

  8. iOS @property语句

    @property声明的形式是: @property ( attributes ) type name; type和name的含义一目了然,attributes描述了如何编写访问器. 一.assign ...

  9. 第1章 计算机网络和协议(2)_OSI参考模型

    2. OSI参考模型 2.1 OSI参考模型详解 (1)参考模型的优点 ①将网络的通信过程划分为小一些.功能简单的部件,有助于各个部件开发.设计和故障排除. ②通过网络组件的标准化,允许多个供应商进行 ...

  10. javascript-时间戳

    // 获取当前时间戳(以s为单位) var timestamp = Date.parse(new Date()); timestamp = timestamp / 1000; console.log( ...