java 奖xls转成csv_Java操作Excel文件以及将xls/xlsx转为csv文件-程序员宅基地

技术标签: java 奖xls转成csv  

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。

通过引入JXL.jar库后可以很方便地对xls或者xlsx文件进行读写操作,下面简要示例对xls文件的读取:

try {

String fileName = "yourPath/datas.xls";

File file = new File(fileName);

// 设置读文件编码

WorkbookSettings setEncode = new WorkbookSettings();

setEncode.setEncoding("GB2312");

// 从文件流中获取Excel工作区对象(WorkBook)

Workbook wb = Workbook.getWorkbook(file,setEncode);

// 从工作区中取得页(Sheet),默认单独一页,第一页

Sheet sheet = wb.getSheet(0);

// 测试:循环打印Excel表中的内容

for (int i = 0; i < 50; i++) {

for (int j = 0; j < sheet.getColumns(); j++) {

Cell cell = sheet.getCell(j, i);

System.out.print(cell.getContents());

}

System.out.println();

}

} catch (BiffException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

这样便可以挨个取出xls文件中每个单元格内的具体内容。

=====xls转 CSV=======

但是xls文件并不如csv的逗号文件应用方便和广泛,因此本文顺便示例如何将xls文件转化为csv文件。

其实只需要挨个将xls文件的单元格数据读取出来以后,加上英文逗号,追加到StringBuffer中即可,待完成所有数据的读取,最后将buffer写入到文件中。

但是有一个小小的陷阱需要注意:那就是在xls文件中,某个单元格内的内容有可能存在换行问题,因此需要置换每行的数据(除了每行的结束)以外所有换行符”\n”,不然生成的csv是无法使用的,简单示例代码如下:

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

import jxl.WorkbookSettings;

import jxl.read.biff.BiffException;

public class dealExcels {

public static void main(String[] args) {

String buffer = "";

try {

String fileName = "yourPath/datas.xls";

File file = new File(fileName);

// 设置读文件编码

WorkbookSettings setEncode = new WorkbookSettings();

setEncode.setEncoding("GB2312");

// 从文件流中获取Excel工作区对象(WorkBook)

Workbook wb = Workbook.getWorkbook(file,setEncode);

Sheet sheet = wb.getSheet(0);

for (int i = 0; i < sheet.getRows(); i++) {

for (int j = 0; j < 11; j++) {

Cell cell = sheet.getCell(j, i);

buffer += cell.getContents().replaceAll("\n", " ")+",";

}

buffer = buffer.substring(0, buffer.lastIndexOf(",")).toString();

buffer += "\n";

}

} catch (BiffException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

//write the string into the file

String savePath = "yourPath/datas.csv";

File saveCSV = new File(savePath);

try {

if(!saveCSV.exists())

saveCSV.createNewFile();

BufferedWriter writer = new BufferedWriter(new FileWriter(saveCSV));

writer.write(buffer);

writer.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

xls文件转csv文件就是将所有内容进行拼接,需要注意的就是 编码 问题 和 单个单元格内的 换行符。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39970855/article/details/114713767

智能推荐

linux下 boa cgi移植(转)-程序员宅基地

文章浏览阅读181次。http://blog.chinaunix.net/u1/33226/showart_485155.html嵌入式WEB服务器常见的有lighttpd shttpd thttpdboa mathopd minihttpdappwebgoahead=========================================================..._cgipath /bin:/usr/bin:/usr/local/bin

结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程...-程序员宅基地

文章浏览阅读452次。1、bootstrap-fileinpu的简单介绍在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用,整合两者可以实现我们常规的Web数据导入操作,导入数据操作过程包括有上传文件,预览数据,选择并提交记录等一系列操作。关于这个插件,我在早期随笔《Boots..._c# bootstrap excel导入

编写应用程序,有一个标题为“计算”的窗口,窗口的布局为FlowLayout布局。窗口中添加两个文本区,当我们在一个文本区中输入若干数时,另一个文本区不断地更新求和及平均值。_实现标题计算的窗口,随着用户输入,输出求和及平均值-程序员宅基地

文章浏览阅读4.8k次,点赞8次,收藏46次。import javax.swing.*;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;import java.awt.*;import java.util.Scanner;public class Dzj { public static void main(String[] args) { new DzjWin("计算"); }}class ._实现标题计算的窗口,随着用户输入,输出求和及平均值

Android 音视频采集与软编码总结_android 软编码算法-程序员宅基地

文章浏览阅读1.1w次,点赞11次,收藏36次。前言本文总结了笔者在 Android 音视频采集与软编码中的一些经验与技巧,包括移植 FFmpeg、YUV 视频帧处理、最新的 JNI 编写技巧、 ndk 开发技巧等,为了不扯太远本文不会对音视频编码的一些原理性东西进行剖析,也不会大量贴源码,更注重使用方法与流程的讲解。 文章最后将展示一个实现了音视频采集功能与本地视频压缩功能的完整项目。采用软编码利弊众所周知_android 软编码算法

css中级选择器_css 子类怎么设置-程序员宅基地

文章浏览阅读479次,点赞3次,收藏2次。讲述了一些常见的css中级选择器,例如派生选择器(所有子代)、直接子类选择器(只找儿子)、分组选择器(不同标签,相同样式时)、兄弟选择器(找右边临近的第一个元素)_css 子类怎么设置

平板鸿蒙系统实测,平板电脑已预装鸿蒙系统,我们来看看效果-程序员宅基地

文章浏览阅读1.6k次。就在近日,华为方面也是再次传来了好消息,根据华为心声社区的最新报道中,华为创始人任正非先生也正式对外透露了,华为最新平板电脑产品已经开始预装鸿蒙OS系统,这意味着大家一直非常期待的华为鸿蒙OS系统终于要被预装到华为平板电脑上,消费者很快就能够看到这款平板电脑上市销售了,但华为任正非并未透露具体的产品上市时间,但这也意味着华为在遭到谷歌的“断供”之后,华为鸿蒙OS系统、华为HMS生态系统服务,终于要..._鸿蒙系统平板

随便推点

CentOS 7 下Docker的安装与部署详细步骤(图文详解)_contos7 pageplug docker-程序员宅基地

文章浏览阅读6.2k次,点赞5次,收藏43次。Docker的安装与部署准备工作操作系统要求操作系统环境设置准备工作1、操作系统:VMWare虚拟机 、 CentOS 7VMware虚拟机下载和安装教程CentOS 7安装教程2、CentOS 7 操作系统网络可用。3、官方参考文档纯英文操作系统要求1、安装docker需要在centos7以上版本;2、linux内核版本需要在3.10以上,可通过uname -r 查看系统内核。操作系统环境设置1、关闭防火墙centos7 以后默认用firewalld取代iptables,这两个防_contos7 pageplug docker

linux的tomcat下载,tomcat linux 64位下载-程序员宅基地

文章浏览阅读1.2k次。tomcat 8发布了,这里为大家带来了 linux版本下载,此版本为8.0.32 tomcat linux 64位下载,它是由Apache 所开发的一个核心项目,由于Tomcat 产品的技术先进、性能稳定,而且免费,因此该程序深受Java 爱好者的喜爱,此软件目前成为了比较流行的Web 应用服务器。下面有详细的安装配置教程,大家可以学习一下。官方介绍使用Apache Tomcat 软件了Jav..._tomcat linux64位下载

Laravel 5 系列入门教程(三)【最适合中国人的 Laravel 教程】_laravel layouts 单选框-程序员宅基地

文章浏览阅读852次。本教程示例代码见:https://github.com/johnlui/Learn-Laravel-5 大家在任何地方卡住,最快捷的解决方式就是去看我的示例代码。本篇教程中,我们将利用 Laravel 5 自带的开箱即用的 Auth 系统对我们的后台进行权限验证,并构建出前台页面,对 Pages 进行展示。1. 权限验证后台地址为 http://fuck._laravel layouts 单选框

CentOS7下安装MySQL5.7.29_mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar-程序员宅基地

文章浏览阅读1.3k次。准备工作Linux 命令教程以下有的不懂命令可以在这里查询理解https://www.runoob.com/linux/linux-comm-rpm.html查看CentOS7版本cat /etc/redhat-release卸载mariadb查询所有mariadb套件同时卸载掉rpm -qa|grep mariadbrpm -e --nodeps mariadb-libs..._mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar

nginx的部署和常用命令_pcre-devel-8.43-程序员宅基地

文章浏览阅读200次。nginx的部署前言在部署项目时,用到nginx,很多时候在内网,无法在线安装,这里使用在线,离线两种方式,部署依赖。一、安装说明系统环境:CentOS7.5软件:nginx-1.18.0.tar.gz其他所需软件:gcc-4.8.0.tar.gz、pcre-8.43.tar.gz、zlib-1.2.11.tar.gz、openssl-1.0.2p.tar.gz安装方式:源码编译安装安装位置:/usr/local/nginxroot用户操作安装,否则无法创建默认目录安装包下载地址:ng_pcre-devel-8.43

c语言求最大公约数和最小公倍数_最大公因数和最小公倍数求法之我见-程序员宅基地

文章浏览阅读1.3k次。随着课程改革的不断推进,老师们逐渐认识到,教材仅仅是课程的一种重要载体,而不是课程的全部。任何课程实施,都需要和开发大量的课程资源。下面就和大家谈一谈除了教材资源,怎样用“数学眼光”来搜索教学资源的。众所周知,最大公因数和最小公倍数有着广泛的应用,特别是在分数四则运算中,更是不可缺失。所以求最大公因数和最小公倍数是小学高年级数学教学的重点,也是难点。下面列举两个数的最大公因数和最小公倍数..._用c语言求24和36的最大公倍数