最近看到有人在“技術問答”上提問怎麼用java在excel中插入打勾符号?我想解決這個問題并不難。
我們先打開一個excel檔案,在裡面插入特定符号,然後用poi(其他的技術也可以)讀取值,看看是什麼,
然後再把相應的java對象寫入新的excel檔案就可以了。
插入符合如下圖所示:
裡面我們可以看到有打勾的符号,注意下面的字元代碼,先留意,因為我預感這個就是我們所需要的。
編輯儲存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));// 驗證字元代碼是否可行
}
}
運作的結果如下:
如上圖所屬,其實這些特殊的符号是按字元的類型(比較特殊的字元)寫入檔案的,而且我們用字元代碼生成的字元串和他們是相等的。
接下來就簡單了,我們再寫個測試程式,插入這些字元到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();
}
打開檔案檢視如下:
驗證成功了!同理如果想在word或者其他office文檔中在特殊的編輯,也可以按這個思路去解決。
注:示例代碼中出現的兩個類,隻是我自己封裝過的,友善處理,本身和這個問題無關,是以就不提供詳細代碼了。