java excel转json[通俗易懂]

java excel转json[通俗易懂]packagecom.xmg.excel;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStreamWriter;importjava.net.URL;import…

大家好,又见面了,我是你们的朋友全栈君。

package com.xmg.excel;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.URL;
import com.xmg.constants.ExcelConstant;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import net.sf.json.JSONArray;

public class ExcelTranslator {

	public static void main(String[] args) {
		String cfgFile = "test.xls";
		if (args.length > 0) {
			cfgFile = args[0];
		}
		new ExcelTranslator().translateFile(cfgFile);
		//new ExcelTranslator().test();
	}

	private void test() {
		JSONArray array1 = new JSONArray();
		array1.add(12);
		array1.add(22);
		JSONArray array2 = new JSONArray();
		array2.add(21);
		array2.add(22);
		JSONArray array = new JSONArray();
		array.add(array1);
		array.add(array2);
		System.out.println(array.toString());
	}
	
	
	Sheet sheet;
	Workbook book;

	private void translateFile(String cfgFile) {

		ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
		URL url = classLoader.getResource(cfgFile);
		try {
			book = Workbook.getWorkbook(new File(url.getFile()));
			sheet = book.getSheet(0);
			outputToJSON(sheet);
		} catch (BiffException | IOException e) {
			e.printStackTrace();
		}
	}

	private void outputToJSON(Sheet sheet2) throws IOException {
		JSONArray arr = new JSONArray();
		for (int i = ExcelConstant.DATA_START_INDEX; i < sheet.getRows(); i++) {
			JSONArray rowarr = new JSONArray();	
			for (int j = 0; j < sheet.getColumns(); j++) {
				Cell cell = sheet.getCell(j, i);
				rowarr.add(cell.getContents());
			}
			arr.add(rowarr);
		}
		writeToFile(arr.toString(),".json");
	}

	public void outputToTxt(Sheet sheet) throws IOException {
		StringBuilder builder = new StringBuilder();
		for (int i = ExcelConstant.DATA_START_INDEX; i < sheet.getRows(); i++) {

			for (int j = 0; j < sheet.getColumns(); j++) {
				Cell cell = sheet.getCell(j, i);
				builder.append(cell.getContents() + "|");
			}
			builder.append("\r\n");
		}
		writeToFile(builder.toString(),".txt");
	}

	public void writeToFile(String info,String filePostfix) throws IOException {
		String path = ExcelConstant.GENERATE_TXT_LOCATION + sheet.getName() + filePostfix;
		BufferedWriter bw = null;
		try {
			FileOutputStream out = new FileOutputStream(path, true);// true,表示:文件追加内容,不重新生成,默认为false
			bw = new BufferedWriter(new OutputStreamWriter(out, "GBK"));
			bw.write(info += "\r\n");// 换行
			bw.flush();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			bw.close();
		}
	}

	public void printOutContent(Sheet sheet) {
		for (int i = ExcelConstant.DATA_START_INDEX; i < sheet.getRows(); i++) {

			for (int j = 0; j < sheet.getColumns(); j++) {
				Cell cell = sheet.getCell(j, i);
				System.out.print(cell.getContents() + "|");
			}
			System.out.println();
		}
	}
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130773.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月13日 下午2:00
下一篇 2022年6月13日 下午2:16


相关推荐

  • Vue自定义指令原来这么简单

    Vue自定义指令原来这么简单看完这篇轻松掌握 Vue 自定义指令 助你面试 solo 面试官 项目中帮你处理更多难解情况 学习 Vue 指令原来这么简单

    2026年3月20日
    1
  • VirtualBox安装VBoxGuestAdditions增强功能

    VirtualBox安装VBoxGuestAdditions增强功能VirtualBox 的增强功能 VBoxGuestAdd 太酷啦 VirtualBox 没装增强功能的时候实在是弱爆了 只能小窗口访问 并且总是要通过 hostkey 切换鼠标 非常麻烦 一开始我只是想要扩大虚拟机的分辨率 不想它总是那么小窗口不好用 then 发现安装 VBoxGuestAdd 可以解决好多问题 VirtualBoxGu 的功能

    2026年3月26日
    0
  • jQuery实现返回顶部功能[通俗易懂]

    jQuery实现返回顶部功能[通俗易懂]jQuery实现返回顶部功能整理两个实现功能,一个是右下角的返回顶部,一个是右侧的返回顶部,分别如图第一种实现一、JSP或HTML(主体结构)在body中添加

    2022年7月13日
    19
  • 模拟新浪微博随便看看栏目

    模拟新浪微博随便看看栏目使用 ListView 来模仿微博随便看看栏 分析 nbsp 要完成这个效果 我们需要 nbsp 1 ListView 及 List ItrmextendsA 的编写 nbsp 2 定义数据集合 nbsp 3 创建 SimpleAdapte 绑定数据 nbsp 4 添加单击事件 nbsp 编码 MainActivity packagecom example androidweibo imp

    2026年3月19日
    2
  • 线性回归 – 机器学习多元线性回归 – 一步一步详解 – Python代码实现

    线性回归 – 机器学习多元线性回归 – 一步一步详解 – Python代码实现目录数据导入单变量线性回归绘制散点图相关系数 R 拆分训练集和测试集多变量线性回归数据检验 判断是否可以做线性回归 训练线性回归模型先甩几个典型的线性回归的模型 帮助大家捡起那些年被忘记的数学 单变量线性回归 h x theta0 theta1 x1 多变量线性回归 h x theta0 theta1 x1 theta2 x

    2026年3月18日
    0
  • 巴什博弈

    巴什博弈

    2021年9月2日
    96

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号