Export số điện thoại từ C# ra Excel mà không bị mất số 0 ở đầu

Em mới học về c#, có bài tập in cái bảng nhân viên ra excel, nhưng đến đoạn in sdt với cmnd thì bị mất số 0 ở đầu. Có bác nào biết giải quyết k ạ T.T Đây là đoạn code của em:

public void Export(DataTable dt, string sheetName, string title)
{
//Tạo các đối tượng Excel

        COMExcel.Application oExcel = new Microsoft.Office.Interop.Excel.Application();
        COMExcel.Workbooks oBooks;
        COMExcel.Sheets oSheets;
        COMExcel.Workbook oBook;
        COMExcel.Worksheet oSheet;
        COMExcel.Range oRange;
        //Tạo mới một Excel WorkBook 
        oExcel.Visible = true;
        oExcel.DisplayAlerts = false;
        oExcel.Application.SheetsInNewWorkbook = 1;
        oBooks = oExcel.Workbooks;
        oBook = (COMExcel.Workbook)(oExcel.Workbooks.Add(Type.Missing));
        oSheets = oBook.Worksheets;
        oSheet = (COMExcel.Worksheet)oSheets.get_Item(1);
        oSheet.Name = sheetName;
        //tiêu đề
        oRange.Range["A7:R7"].Font.Bold = true;
        oRange.Range["A7:R7"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter;
        oRange.Range["A1:A1"].ColumnWidth = 5;
        oRange.Range["B1:B1"].ColumnWidth = 12;
        oRange.Range["C7:H7"].ColumnWidth = 20;
        oRange.Range["D7:D7"].ColumnWidth = 5;
        oRange.Range["E7:E7"].ColumnWidth = 10;
        oRange.Range["F7:F7"].ColumnWidth = 12;
        oRange.Range["G7:G7"].ColumnWidth = 15;
        oRange.Range["H7:H7"].ColumnWidth = 20;
        oRange.Range["I7:I7"].ColumnWidth = 13;
        oRange.Range["J7:J7"].ColumnWidth = 10;
        oRange.Range["K7:K7"].ColumnWidth = 12;
        oRange.Range["L7:L7"].ColumnWidth = 15;
        oRange.Range["M7:M7"].ColumnWidth = 10;
        oRange.Range["N7:N7"].ColumnWidth = 12;
        oRange.Range["O7:O7"].ColumnWidth = 15;
        oRange.Range["P7:P7"].ColumnWidth = 8;
        oRange.Range["Q7:Q7"].ColumnWidth = 12;
        oRange.Range["R7:R7"].ColumnWidth = 20;
        oRange.Range["A7:A7"].Value = "STT";
        oRange.Range["B7:B7"].Value = "Mã NV";
        oRange.Range["C7:C7"].Value = "Họ và tên";
        oRange.Range["D7:D7"].Value = "GT";
        oRange.Range["E7:E7"].Value = "Ngày sinh";
        oRange.Range["F7:F7"].Value = "Nơi sinh";
        oRange.Range["G7:G7"].Value = "SĐT";
        oRange.Range["H7:H7"].Value = "Địa chỉ";
        oRange.Range["I7:I7"].Value = "CMND";
        oRange.Range["J7:J7"].Value = "Ngày cấp";
        oRange.Range["K7:K7"].Value = "Nơi cấp";
        oRange.Range["L7:L7"].Value = "Email";
        oRange.Range["M7:M7"].Value = "Học vấn";
        oRange.Range["N7:N7"].Value = "Hôn nhân";
        oRange.Range["O7:O7"].Value = "Chức vụ";
        oRange.Range["P7:P7"].Value = "Mã PB";
        oRange.Range["Q7:Q7"].Value = "Mã HĐ";
        oRange.Range["R7:R7"].Value = "Ghi chú";
        // Tạo mảng đối tượng để lưu dữ toàn bộ dữ liệu trong DataTable,
        // vì dữ liệu được được gán vào các Cell trong Excel phải thông qua object thuần.
        object[,] arr = new object[dt.Rows.Count, dt.Columns.Count];
        //Chuyển dữ liệu từ DataTable vào mảng đối tượng
        for (int r = 0; r < dt.Rows.Count; r++)
        {
            oSheet.Cells[1][r + 8] = r + 1;
            oRange = oSheet.Cells[1][r + 8];
            oRange.Borders.LineStyle = COMExcel.Constants.xlSolid;
            DataRow dr = dt.Rows[r];
            for (int c = 0; c < dt.Columns.Count; c++)
            {
                arr[r, c] = dr[c];
            }
        }
        //Thiết lập vùng điền dữ liệu
        int rowStart = 8;
        int columnStart = 2;
        int rowEnd = rowStart + dt.Rows.Count - 1;
        int columnEnd = dt.Columns.Count + 1;
        // Ô bắt đầu điền dữ liệu
        COMExcel.Range c1 = (COMExcel.Range)oSheet.Cells[rowStart, columnStart];
        // Ô kết thúc điền dữ liệu
        COMExcel.Range c2 = (COMExcel.Range)oSheet.Cells[rowEnd, columnEnd];
        // Lấy về vùng điền dữ liệu
        COMExcel.Range range = oSheet.get_Range(c1, c2);
        //Điền dữ liệu vào vùng đã thiết lập
        range.Value2 = arr;
        //giữ nguyên số 0 ở đầu cột sdt và cmnd
        
        COMExcel.Range sdt1 = (COMExcel.Range)oSheet.Cells[rowStart, columnStart + 5];
        COMExcel.Range sdt2 = (COMExcel.Range)oSheet.Cells[rowEnd, columnStart + 5];
        COMExcel.Range sdt = oSheet.get_Range(sdt1, sdt2);
        sdt.Columns.NumberFormat = "(+84)#";

em bí quá làm thế này thì cũng chỉ đc cột sdt, đến cột cmnd thì tắc luôn.
bác nào giúp em với !!!

em xin cám ơn

2 Likes

thêm ’ vào thì thêm ở đoạn nào và thêm như thế nào ạ??

Chuỗi_ghi_SDT_vô_excel = " ’ " + SDT
Cái dấu ’ đứng đầu tiên trong ô nói với excel rằng nội dung trong ô này là chuỗi

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?