去下载一个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值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)