01/10/2018, 16:13
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
Bài liên quan
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