java 怎么读取Excel的数据,在控制台上输出来,看了很多网上的方法,都试试了,没效果,无用!

java 怎么读取Excel的数据,在控制台上输出来,看了很多网上的方法,都试试了,没效果,无用!,第1张

去下载一个jxl-26jar,如果没有留邮箱发给你

import javaioFile;

import javaioFileInputStream;

import javaioIOException;

import javaioInputStream;

import javautilArrayList;

import javautilList;

import jxlCell;

import jxlSheet;

import jxlWorkbook;

import jxlreadbiffBiffException;

/

读取excel公共方法

@author guyong

/

public class ExcelReader {

/

@param excelFile 读取文件对象

@param rowNum 从第几行开始读,如果有一行表头则从第二行开始读

@return

@throws BiffException

@throws IOException

/

public static List<String[]> readExcel(File excelFile,int rowNum) throws BiffException,

IOException {

// 创建一个list 用来存储读取的内容

List<String[]> list = new ArrayList<String[]>();

Workbook rwb = null;

Cell cell = null;

// 创建输入流

InputStream stream = new FileInputStream(excelFile);

// 获取Excel文件对象

rwb = WorkbookgetWorkbook(stream);

// 获取文件的指定工作表 默认的第一个

Sheet sheet = rwbgetSheet(0);

// 行数(表头的目录不需要,从1开始)

for (int i = rowNum-1; i < sheetgetRows(); i++) {

// 创建一个数组 用来存储每一列的值

String[] str = new String[sheetgetColumns()];

// 列数

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

// 获取第i行,第j列的值

cell = sheetgetCell(j, i);

str[j] = cellgetContents();

}

// 把刚获取的列存入list

listadd(str);

}

// 返回值集合

return list;

}

public static void main(String[] args) {

String excelFileName = "abcxls";

try {

List<String[]> list = ExcelReaderreadExcel(new File(excelFileName),1);

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

String[] str = (String[])listget(i);

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

Systemoutprintln(str[j]);

}

}

} catch (BiffException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

}

}

最近开发java控制台项目 由于用了第三方库 必须使用utf 字符 当然在开发环境eclipse下 显示是正常的

但是windows的控制台 却是输出乱码

    虽然不改 程序逻辑是正确 作为偏执狂还是翻阅了各种资料                         网上各种文章 不是用chcp改变控制台编码 就是建议修改程序编码为GBK         参考了stackoverflow的一篇文章 找到一种使用Windows内核API的方案        utf and windows console        核心是封装一个Console类        package demo;import sun jna Native;import sun jna Pointer;import sun jna ptr IntByReference;import sun jna win StdCallLibrary;/ For unicode output on windows platform   @author Sandy_Yin   /public class Console {private static Kernel INSTANCE = null;public interface Kernel extends StdCallLibrary {public Pointer GetStdHandle(int nStdHandle) public boolean WriteConsoleW(Pointer hConsoleOutput char[] lpBuffer int nNumberOfCharsToWrite IntByReference lpNumberOfCharsWritten Pointer lpReserved) }static {String os = System getProperty( os name ) toLowerCase() if (os startsWith( win )) {INSTANCE = (Kernel ) Native loadLibrary( kernel Kernel class) }}public static void print(String message) {if (!prePrint(message))System out print(message) }protected static boolean prePrint(String message) {boolean successful = false;if (INSTANCE != null) {Pointer handle = INSTANCE GetStdHandle( ) char[] buffer = message toCharArray() IntByReference lpNumberOfCharsWritten = new IntByReference() successful = INSTANCE WriteConsoleW(handle buffer buffer length lpNumberOfCharsWritten null) }return successful;}public static void println(String message) {// from// utf and windows consoleif (prePrint(message)) {System out println() } else {System out println(message) }}}        对输出进行测试 使用命令 java jar sample jar 发现输出还是一样 添加命令行参数 使用java Dfile encoding=utf jar sample jar 就达到效果了 PS 此方法还存在一些缺陷 但并不是Console类造成的 上图中 测试 前有一个空白的地方 这是应为使用utf 方式读入非UTF 文件产生的 在文件开始会出现 代码下载 /Files/anic/utf sample_source zip/Files/anic/utf sample_runtime zip lishixinzhi/Article/program/Java/hx/201311/25701

写主要的一部分了。。自己再完善。。

public static void main(String[] args) {

    Scanner input = new Scanner(Systemin);

    int value = inputnextInt();

    Systemoutprintln(value); // 这里就在控制台上输出了

}

最近我也一直在做这个相关的东西,发现不好做啊,后来想到一个别的办法,把log4J的日志写在项目目录下,然后在web中可以直接访问, 有一个监控软件probe, 其中实现了这个功能, 你可以去看看,他是直接从tomcat获取的api来截取控制台消息,

public static void main(String[] args)throws Exception{

BufferedReader br=new BufferedReader(new InputStreamReader(Systemin));

String name=brreadLine();

//连接数据可

//Statement st;

ResultSet rs=stexecuteQuery(sql);--rs就是你要的结果

rsget把你要的值取出来就行了

}

由于不知道具体有几个整数,总体来说有两种方法,第一种是读取一行,然后把这一行输入转成数组。第二种方法是读到某个标志位(比如-1)结束。代码如下:

import javaioBufferedReader;

import javaioInputStreamReader;

import javautilArrayList;

import javautilArrays;

import javautilList;

import javautilScanner;

import javaioIOException;

public class BasicInput {

public static void main(String[] args) {

// int[] arr = readLine(); //方法一

int[] arr = readToFlag();//方法二

Arrayssort(arr);

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

Systemoutprint(arr[i]+" ");

}

Systemoutprintln();

}

public static int[] readLine(){

String str = "";

try {

Systemoutprintln("属于一行整数,中间用空格隔开。");

// 在Java当中,用户输入要通过InputStream(输入流)来获取。

// Systemin就是系统的输入流。缺省情况下这个输入流连接到控制台(命令行)。

// InputStreamReader就是用来读取InputStream的类。

InputStreamReader is_reader = new InputStreamReader(Systemin);

// 通常使用BufferedReader来读取InputStream中的字符串内容。

// BufferedReader可以一次读取一行。

str = new BufferedReader(is_reader)readLine();

is_readerclose();

} catch (IOException e) {

eprintStackTrace();

}

String [] strArr = strsplit(" ");

int [] arr = new int [strArrlength];

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

arr[i] = IntegerparseInt(strArr[i]);

}

return arr;

}

public static int[] readToFlag(){

List<Integer> list = new ArrayList<Integer>();

Scanner input=new Scanner(Systemin);

Systemoutprintln("请输入多个数值,输入-1表示输入结束");

int tmp=inputnextInt();//输入一个正整数

while(tmp!=-1){

listadd(tmp);

tmp=inputnextInt();

}

inputclose();

int [] arr = new int [listsize()];

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

arr[i] = listget(i);

}

return arr;

}

}

以上就是关于java 怎么读取Excel的数据,在控制台上输出来,看了很多网上的方法,都试试了,没效果,无用!全部的内容,包括:java 怎么读取Excel的数据,在控制台上输出来,看了很多网上的方法,都试试了,没效果,无用!、用java在Windows控制台输出utf8字符、java控制台上怎么输出value值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9504208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存