java excel转json

java excel转jsonpackagecom.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/130772.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 土法炼钢_百度百科[通俗易懂]

    土法炼钢_百度百科[通俗易懂]土法炼钢_百度百科土法炼钢

    2022年8月5日
    7
  • linux node升级_linux系统升级到指定版本

    linux node升级_linux系统升级到指定版本问题在docker容器中启动node项目,但不希望每次都要npmi,所以要把源代码采用挂载的方式,放在镜像中。需要在服务器中npmi,之后启动容器,结果报错了,原因是node版本不对。后来采用了先挂载安装包,后再启动容器。其实我们可以选择升级一下本地主机的node版本就方便多了升级nodenode-v 首先清理npm的缓存 npmcacheclean-f 安装版本管理工具 npminstall-gn 更新到最新的版本 nl..

    2025年6月10日
    2
  • 最详细动态规划解析——背包问题

    最详细动态规划解析——背包问题动态规划的定义要解决一个复杂的问题,可以考虑先解决其子问题。这便是典型的递归思想,比如最著名的斐波那契数列,讲递归必举的例子。斐波纳契数列的定义如下:F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)用递归可以很快写出这样一个函数,咋一看真牛逼,几行代码就搞定了intfib(inti){if(i<=1){ret

    2022年7月26日
    13
  • 计算机串口(RS232)的针脚定义

    计算机串口(RS232)的针脚定义RS 232C 接口定义 DB9 引脚定义符号 1 载波检测 DCD DataCarrierD 2 接收数据 RXD ReceivedData 3 发送数据 TXD TransmitData 4 数据终端准备好 DTR DataTerminal 5 信号地 SG SignalGround 6 数据准备好 DSR DataSetReady 7 请

    2025年7月18日
    4
  • 手机号码归属地 mysql_最新手机号段归属地数据库 (2021年1月版) 471402行

    手机号码归属地 mysql_最新手机号段归属地数据库 (2021年1月版) 471402行//名称:手机号码归属地查询dat高效率查询内存优化版//压缩:原版txt为22M,生成这种dat结构为2.66M//性能:每秒解析300万+号段或者号码,简洁高效//环境:CPUi7-7700K+内存16GB//创建:qqzeng-ipusingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Text;…

    2022年7月22日
    13
  • PHP fopen/file_get_contents与curl性能比较

    PHP fopen/file_get_contents与curl性能比较

    2022年2月9日
    47

发表回复

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

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