JAVAの小さな演習-7POI処理Excelファイル-XLSファイルの読み取り

前提条件:POI 4.1.2はJDK1.8に対応します。たとえば、バージョンが対応しない場合、JDK1.7は確実に機能しません。その後、多くの迂回を行います。

  1. POIjarパッケージのダウンロード
    POI公式ウェブサイトのダウンロードアドレス

  2. ダウンロード後に解凍する

ここに画像の説明を挿入ここに画像の説明を挿入

ここに画像の説明を挿入

  1. 解凍したフォルダー内のjarパッケージ(libフォルダー内のjarパッケージを含むすべてのjarパッケージ)を、新しく作成したJavaプロジェクト「Excel」(自分で作成したフォルダー)のlibフォルダーにコピーします。

ここに画像の説明を挿入

  1. すべてのjarパッケージを選択し、右クリックして[ビルドパス]-> [ビルドパスに追加]を選択し、すべてのjarパッケージをパスに追加します。

5操作中にエラー「スレッド "main" java.lang.UnsupportedClassVersionError:org / apache / poi / ss / usermodel / Sheet:Unsupported major.minor version52.0」が報告されました。Baiduは現在のjdkバージョンが低すぎることを検出しました。、私はJDK1.7
ソリューションを使用します。

(1)JDK1.8をダウンロードし、以下をインストールします。

Baiduクラウドディスクアドレス:
https
://pan.baidu.com/s/1s5VbBpjaKn9klEr2iYTCiw抽出コード:40i8
(2)JDK1.8環境の構成
リファレンス:https://blog.csdn.net/sunrise52java/article/details/88536711
( 3)Eclipseを構成します

「ウィンドウ」->「設定」->「JAVA」->「インストール済みJRES」->「追加」を
ここに画像の説明を挿入
クリックして「標準VM」選択し、「次へ」を
ここに画像の説明を挿入
クリックして「ディレクトリー」をクリックし、参照してJDKインストール・パス(jdkではなくjre)を選択します。

ここに画像の説明を挿入
[完了]-> [適用]をクリックして、JAVAプロジェクトを作成します。この時点で作成されるプロジェクトはJDK1.8に基づいています。

  1. XLSファイルを読み取る

ここに画像の説明を挿入

package tests;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;

public class ReadExcel {
    
    
	public static void main(String[] args){
    
    
		try {
    
    
			File f = new File("C:\\Users\\Admin\\Desktop\\测试.xls");
			FileInputStream fis = new FileInputStream(f);		
			HSSFWorkbook wb = new HSSFWorkbook(fis);
			//Sheet st = wb.getSheetAt(0);//获取工作表,此处为第一张工作表
			Sheet st = wb.getSheet("新表");//通过表名来获取表
			int no = st.getLastRowNum();//获取最后一行的下标,如果是空的则为-1
			//int c_no = st.getLeftCol();//获取最后一列的下标,如果是空的则为-1
			System.out.println(no);
			Object content;
			if(no!=-1){
    
    
				int x = 0;
				while(x<=no){
    
    
					Row row = st.getRow(x);//获取第x行 
					Cell c = row.getCell(1);//获取第x行第二列的单元格
					CellType ct = c.getCellType();
					String ctt = ct.toString();
					System.out.println("ctt:"+ctt);
					switch(ctt)
					{
    
    
					case "STRING":
						content = c.getStringCellValue();
						break;
					case "NUMERIC":
						Date d = c.getDateCellValue();//单元格为日期类型可用Date接收
						SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
						content = sdf.format(d);//格式化日期
						break;
					default:
						content = "这个数据类型未知";					
					}
					System.out.println(content.toString());
					x++;
				}				
			}			
			wb.close();
			fis.close();		
			} catch (IOException e) {
    
    			
			e.printStackTrace();
		}
		}
}

出力:

日期
ctt:NUMERIC
20201115日
ctt:NUMERIC
20201116日
ctt:NUMERIC
20201117日
ctt:NUMERIC
20201118

8.セルがマージされたXLSを読み取ります

ここに画像の説明を挿入

	public static void main(String[] args) {
    
    
		try {
    
    
			File f = new File("C:\\Users\\Admin\\Desktop\\测试.xls");
			FileInputStream fis = new FileInputStream(f);		
			HSSFWorkbook wb = new HSSFWorkbook(fis);
			//Sheet st = wb.getSheetAt(0);//获取工作表,此处为第一张工作表
			Sheet st = wb.getSheet("新表");//通过表名来获取表
			int no = st.getLastRowNum();//获取最后一行的下标,如果是空的则为-1
			//int c_no = st.getLeftCol();//获取最后一列的下标,如果是空的则为-1
			System.out.println(no);
			Object content;
			if(no!=-1){
    
    
				int x = 0;
				while(x<=no){
    
    
					Row row = st.getRow(x);//获取第x行 
					Cell c = row.getCell(0);//获取第x行第二列的单元格
					CellType ct = c.getCellType();
					String ctt = ct.toString();
					System.out.println("=============================");
					System.out.println("ctt:"+ctt);					
					System.out.println(c.getColumnIndex());
					System.out.println(c.getRowIndex());
					switch(ctt)
					{
    
    
					case "STRING":
						content = c.getStringCellValue();
						break;
					case "NUMERIC":
						content = (int) c.getNumericCellValue();
						break;
					case "BLANK"://合并单元格只会读到第一个格的值,其余单元格getCellType()返回为“BLANK"
						content = "null";
						break;
					default:
						content = "这个数据类型未知";					
					}
					System.out.println(content.toString());
					x++;
				}				
			}			
			wb.close();
			fis.close();		
			} catch (IOException e) {
    
    			
			e.printStackTrace();
		}
	}
}

おすすめ

転載: blog.csdn.net/KathyLJQ/article/details/109695789