‘壹’ 怎么获取excel字符间列java
一、excel读取的两种方式
Java中解析excel的方式,我目前知道的有两种,一种是 jxl 读取,另一种是 poi 读取
1.1 jxl 和 poi 的区缺旦亏别和选择
① jxl 只能解析 xls 文件,不能 解析 xlsx 文件; poi 则是可伏神以同时兼容xls 和xlsx两种文件类型,这是要注意的第一个点;
② 这迟改两个方法的读取方式不一样,jxl 读取的是 先读列 然后循环获取的该列每行的信息。poi 读取是 先读行,再循环获取每列的信息。如下图:
‘贰’ java jxl 读取excel时读取了很多空行 求解决办法
这应该是excel文件中的问题,看看是不是文件中后面那些行里面有空格,或者做过其他标记,可以直接把excel的第21到第31行选中然后删除,保存好之后重新用jxl读取试试。
‘叁’ jxl (java excel api ) 读取直接用公式计算出来的值是多少
jxl是打开excel格式的文件读取单元格内容的,formula设置公式的单元格在没有excel程序打开的情况下是不会自动计算的。
“他所读出来的值都为4”4可能代表单元格的类型,公式类型。
可以使用Office的专用中间件SOAOffice来解决,编程简单,读取公式计算的值也没问题
‘肆’ java怎么读取上传的excel文件
java怎么读取上传的excel文件,解决办法:
添加jar文件,java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。
jxl对Excel表格的认识,每个单元格的位置认为是由一个二维坐标(i,j)给定,其中i表示列,j表示行,并且从上到下递增,从左到右递增。
对于合并单元格的以最左,最上的单元格的坐标为准。如下图中t.xls,一班名单(0,0),陈茵(1,2),陈开先(1,6)。
‘伍’ java读取excel文件运行问题,用的是jxl包。运行时选择的是Demo。不知道怎么运行,求高手指点。
//Excel 数据 比对 系统
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class ExcelContrast {
static String file1 = "d://java//1.xls";
static String file2 = "d://java//2.xls";
static HashMap<Integer, String> hsMap1 = new HashMap<Integer, String>();
static HashMap<Integer, String> hsMap2 = new HashMap<Integer, String>();
static int found = 0;
public static void main(String[] args) {
System.out.println("欢迎使用Excel数据比对系统!");
System.out.println("Excel数据比对系统 开始运行。。。");
System.out.println("读取" + file1);
ReadExcelToHashMap(file1, hsMap1);
// System.out.println(hsMap1.size());
System.out.println("读取" + file1);
ReadExcelToHashMap(file2, hsMap2);
// System.out.println(hsMap2.size());
// System.out.println(hsMap1.values());
// System.out.println(hsMap2.values());
System.out.println("开始比对。。。");
server();
System.out.println("成功比对出" + found + "条不同数据");
System.out.println("Excel数据比对系统 正常退出。。。");
}
private static void server() {
int i = 0;
System.out.println("遍历比对" + file1);
while (i < hsMap1.size()) {
if (hsMap2.containsValue(hsMap1.get(i))) {
} else {
System.out.println(file1 + " 第" + (i + 1) + "行 "
+ hsMap1.get(i));
UpdateExcel(i, 0, hsMap1.get(i), file1);
UpdateExcel(i, 1, "稽核", file1);
found++;
}
i++;
}
i = 0;
System.out.println("遍历比对" + file2);
while (i < hsMap2.size()) {
if (hsMap1.containsValue(hsMap2.get(i))) {
} else {
System.out.println(file2 + " 第" + (i + 1) + "行 "
+ hsMap2.get(i));
UpdateExcel(i, 0, hsMap2.get(i), file2);
UpdateExcel(i, 1, "稽核", file2);
found++;
}
i++;
}
}
private static void ReadExcelToHashMap(String file,
HashMap<Integer, String> hsmap) {
try {
Workbook book = Workbook.getWorkbook(new File(file));
// 获得第一个工作表对象
Sheet sheet = book.getSheet(0);
// 得到第一列第一行的单元格
int i = 0;
while (!sheet.getCell(0, i).getContents().equalsIgnoreCase("")) {
hsmap.put(i, sheet.getCell(0, i).getContents());
i++;
}
book.close();
} catch (FileNotFoundException e) {
System.out.println("系统找不到指定的文件:" + file);
System.exit(0);
} catch ( e) {
} catch (Exception e) {
e.printStackTrace();
}
}
static void test_hash() {
HashMap<Integer, String> hsMap = new HashMap<Integer, String>();
hsMap.put(3, "Value3");
hsMap.put(2, "Value2");
System.out.println(hsMap.get(2));
System.out.println(hsMap.values());
System.out.println(hsMap.containsKey(1));
System.out.println(hsMap.containsValue("Value3"));
System.out.println(hsMap.size());
}
static void UpdateExcel(int i, int j, String cell, String file) {
try {
// Excel获得文件
Workbook wb = Workbook.getWorkbook(new File(file));
// 打开一个文件的副本,并且指定数据写回到原文件
WritableWorkbook book = Workbook.createWorkbook(new File(file), wb);
// 添加一个工作表
WritableSheet ws = book.getSheet(0);
// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
WritableFont font = new WritableFont(WritableFont.ARIAL, 15,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.RED);
WritableCellFormat cFormat = new WritableCellFormat(font);
Label labelC = new Label(j, i, cell, cFormat);
try {
// 将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (Exception e) {
e.printStackTrace();
}
book.write();
book.close();
} catch (FileNotFoundException e) {
System.out.println("另一个程序正在使用此文件,进程无法访问。请您关闭EXECL");
System.exit(0);
}
catch (Exception e) {
e.printStackTrace();
}
}
}