jxl导出Excel工具类详解编程语言
2023-06-13 09:20:28 时间
* 注意:此工具类只支持解析excel2003,不支持解析高版本的excel,如果解析高版本excel会报如下错误:
* jxl.read.biff.BiffException: Unable to recognize OLE stream
* 解决方案:将高版本excel文件另存为Excel97-2003工作薄,然后再解析.
* jxl较poi的好处是跨平台,因为是用纯java编写,poi虽然功能比jxl强大,但是是基于windows系统的.
* @author IluckySi
* @since 20141215
public class JxlUtil {
private String filePath;
public String getPath() {
return filePath;
public void setPath(String filePath) {
this.filePath = filePath;
/**
* 解析excel文件.
* @return Map String, List List String
public Map String, List List String parse() {
File file = new File(filePath);
if(!file.exists() || !file.getName().endsWith(".xls")) {
try {
throw new Exception("要解析的路径有问题: " + filePath);
} catch (Exception e) {
e.printStackTrace();
Map String, List List String listListMap = new HashMap String, List List String
Workbook workBook = null;
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
workBook = Workbook.getWorkbook(fis);
Sheet[] sheetArray = workBook.getSheets();
for(int i = 0; sheetArray != null i sheetArray.length; i++) {
Sheet sheet = sheetArray[i];
List List String listList = parseSheet(sheet);
if(listList != null listList.size() 0) {
listListMap.put(sheet.getName(), listList);
} catch (BiffException e) {
System.out.println("解析文件发生异常: " + e);
} catch (IOException e) {
System.out.println("解析文件发生异常: " + e);
} finally {
try {
if(workBook != null) {
workBook.close();
workBook = null;
if(fis != null) {
fis.close();
fis = null;
} catch (Exception e) {
System.out.println("关闭文件流发生异常: " + e);
return listListMap;
/**
* 解析sheet,需要注意的地方:合并单元格,
* 例:如果A6-A12合并了单元格,那么解析excel时,解析类库只认为A6有值.
* @param sheet
private List List String parseSheet(Sheet sheet) {
List List String listList = new ArrayList List String ();
int rowCount = sheet.getRows();
for(int i = 1; i rowCount; i++) {
List String list = new ArrayList String
Cell[] cellArray = sheet.getRow(i);
for(int j = 0; cellArray != null j cellArray.length; j++) {
list.add(cellArray[j].getContents());
listList.add(list);
return listList;
/**
* 将数据源写入到excel中.
* 注意:20150211加的写入方法.
* @param listListMap
* @return
public boolean write(Map String, List List String listListMap) {
File file = new File(filePath);
boolean result = false;
WritableWorkbook workBook = null;
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
workBook = Workbook.createWorkbook(fos);
int sheetNo = 0;
for(Entry String, List List String entry : listListMap.entrySet()) {
String key = entry.getKey();
List List String listList = entry.getValue();
WritableSheet sheet = workBook.createSheet(key, sheetNo++);
for(int i = 0; i listList.size(); i++) {
List String list = listList.get(i);
for(int j = 0; j list.size(); j++) {
Label label = new Label(j, i, list.get(j));
sheet.addCell(label);
workBook.write();
System.out.println("成功写入文件");
} catch (Exception e) {
System.out.println("写入文件发生异常: " + e);
} finally {
try {
if(workBook != null) {
workBook.close();
if(fos != null) {
fos.close();
} catch (IOException e) {
System.out.println("关闭文件流发生异常: " + e);
return result;
}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10128.html
cjavawindows相关文章
- excel宏 java,Microsoft Excel宏运行Java程序
- 基于 Next.js实现在线Excel
- Excel: 数据处理时常用的快捷键
- 关于 SAP UI5 控件内容的 Excel 导出功能,如何加载所需的导出工具库
- Excel函数之COUNTIFS
- 几行代码就能实现复杂的 Excel 导入导出,这个工具类真心强大!
- Excel VBA批量添加(清除)绿色小三角
- 自定义注解实现Excel表头多语言导出
- 图片链接如何在excel里转成图片_mdf文件怎么转成Excel
- 使用VBA复制并粘贴Excel图表到PowerPoint
- Oracle 使用TOAD实现导入导出Excel数据
- Poi实现Excel导出工具类封装详解编程语言
- poi 导出Excel 工具类详解编程语言
- 报表 MySQL导出Excel数据报表的指南(mysql导出excel)
- #应用openxml读写excel代码详解编程语言
- 利用mongodb快速导出Excel文件(mongodb导出excel)
- 利用Excel快速连接MySQL数据库(excel连接mysql)
- MySQL数据导出Excel快速教程(mysql转excel)
- 文件Linux下快速导出Excel文件(linux导出excel)
- 轻松导出:用SQL Server批量将数据导出到Excel(sqlserver导出excel)
- MySQL导出Excel:一步到位(mysql导出exl)
- 从Excel快速导入Oracle数据库(excel到oracle)
- 实现Redis数据批量导出至Excel(redis 转excel)
- GridView导出Excel实现原理与代码
- jquery实现excel导出的方法
- 基于PHP导出Excel的小经验完美解决乱码问题
- 利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
- C#使用RenderControl将GridView控件导出到EXCEL的方法