天天看點

使用POI在Excel單元格插入符号(Symbol)

最近看到有人在“技術問答”上提問怎麼用java在excel中插入打勾符号?我想解決這個問題并不難。

我們先打開一個excel檔案,在裡面插入特定符号,然後用poi(其他的技術也可以)讀取值,看看是什麼,

然後再把相應的java對象寫入新的excel檔案就可以了。

插入符合如下圖所示:

使用POI在Excel單元格插入符号(Symbol)

裡面我們可以看到有打勾的符号,注意下面的字元代碼,先留意,因為我預感這個就是我們所需要的。

編輯儲存excel檔案後,我們編寫個小程式打開檔案讀取一下:

public static void main(String[] args) throws Exception {
		File file = new File("d:/1.xlsx");
		XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(file));
		XSSFSheet sheet = workbook.getSheetAt(0);
		int[] code = {0x2610, 0x2611, 0x2612};
		for (int i = 0; i < 3; i++) {
			XSSFRow row = sheet.getRow(i);
			XSSFCell cell = row.getCell(0);
			Object v = XlsxUtils.getValue(cell);
			System.out.println(v.getClass());// 檢視單元格的類型
			System.out.println(v.toString());// 檢視單元格的字元表示
			String s = (String) v;
			String s1 = new String(code, i, 1);
			System.out.println(s.equals(s1));// 驗證字元代碼是否可行
		}
	}
           

運作的結果如下:

使用POI在Excel單元格插入符号(Symbol)

如上圖所屬,其實這些特殊的符号是按字元的類型(比較特殊的字元)寫入檔案的,而且我們用字元代碼生成的字元串和他們是相等的。

接下來就簡單了,我們再寫個測試程式,插入這些字元到excel檔案:

public static void main(String[] args) throws Exception {
		File file = new File("d:/2.xlsx");
		XlsxEditor editor = new XlsxEditor(file);
		int[] code = {0x2610, 0x2611, 0x2612};
		for (int i = 0; i < 3; i++) {
			editor.gotoCell(i, 0);
			editor.setCellValue(new String(code, i, 1));
		}
		editor.save();
	}
           

打開檔案檢視如下:

使用POI在Excel單元格插入符号(Symbol)

驗證成功了!同理如果想在word或者其他office文檔中在特殊的編輯,也可以按這個思路去解決。

注:示例代碼中出現的兩個類,隻是我自己封裝過的,友善處理,本身和這個問題無關,是以就不提供詳細代碼了。