[Giải pháp]Ghi unicode text ra file excel hiện thị đúng

Discussion in 'Bài viết hướng dẫn JSE' started by JackV, 8/1/17.

  1. JackV

    JackV Administrator Staff Member

    JackV tìm thấy 2 giải pháp cho việc write text cho excel đọc hiểu k cần lib bên thứ 3

    ======= Giải pháp 1 =======
    Commet của anh Elmue tại topic về việc ghi dữ liệu text ra file mà excel đọc hiện thị đúng
    Hint của ãnh là ghi dữ liệu dưới dạng html với đuôi file .xls, hỗ trợ cả css màu
    PHP:
    public class DemoWriteTextToFileBeExcelFile {

        
    /**
         * @param args the command line arguments
         */
        
    public static void main(String[] args) {
            try {
                
    OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream("data.xls"), "utf-16");
                
    os.write("<style>.Head { background-color:gray; color:white; }.Red  { color:red; }</style><table border=1>"
                        
    "<tr><td class=Head>Cột 1</td><td class=Head>Cột 2</td></tr>"
                        
    "<tr><td>Họ và tên</td><td>Nguyễn Nhất</td></tr>"
                        
    "<tr><td class=Red>Kỹ Năng</td><td class=Red>Nhiều kỹ năng nhất :D</td></tr>"
                        
    "</table>");
                
    os.close();
                
    Desktop.getDesktop().open(new File("data.xls"));
            } catch (
    IOException ex) {
                
    ex.printStackTrace();
            }
        }
    }
    Screenshot_1.jpg

    ======= Giải pháp 2 =======
    Sử dụng BOM và UTF16

    PHP:
    public class DemoWriteTextToFileBeExcelFile {

        
    /**
         * @param args the command line arguments
         */
        
    public static void main(String[] args) {
            try {
                
    String duLieu "\uFEFF";//BOM
                
    for (int dong 1dong 11dong++) {
                    for (
    int cot 1cot 5cot++) {
                        
    duLieu += "Dòng " dong " - cột " cot;
                        
    duLieu += "\t"//cách cột
                    
    }
                    
    duLieu += "\n";//xuống dòng, kết thúc dòng
                
    }
       
                
    OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream("data.xls"), "UTF-16LE");
                
    os.write(duLieu);
                
    os.close();
                
    Desktop.getDesktop().open(new File("data.xls"));
            } catch (
    IOException ex) {
                
    ex.printStackTrace();
            }
        }
    }

    Screenshot_2.jpg

    Bạn nào thích dùng lib thì tham khảo
    =================
    Còn việc để excel không thông báo là kiểu định dạng file k phải excel thì giải quyết sau :D Bạn nào biết thì chia sẻ nhé ;)

Chia sẻ trang này