『壹』 怎麼獲取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();
}
}
}