2012-03-09 58 views
10

Đây là mã tôi đang sử dụng ngay bây giờ để đặt giá trị ô. Nó hoạt động ổn nếu số có dấu phân cách như thế nào. hoặc/nhưng khi không có dấu phân cách nó được lưu lại dưới dạng int và nhập số 0 đầu được lộtLàm thế nào để phpexcel giữ số 0 đứng đầu trong số điện thoại?

$sheet->setCellValue($letter[$j].$row_nr,$entity['Phone'], PHPExcel_Cell_DataType::TYPE_STRING); 

Trả lời

21

Hoặc:

// Set the value explicitly as a string 
$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '0029', PHPExcel_Cell_DataType::TYPE_STRING); 

hoặc

// Set the value as a number formatted with leading zeroes 
$objPHPExcel->getActiveSheet()->setCellValue('A3', 29); 
$objPHPExcel->getActiveSheet()->getStyle('A3')->getNumberFormat()->setFormatCode('0000'); 

Lưu ý rằng trong trường hợp đầu tiên tôi m gọi phương thức setCellValueExplicit(), không phải phương thức setCellValue(). Trong mã của bạn, chuyển PHPExcel_Cell_DataType :: TYPE_STRING thành setCellValue() không có ý nghĩa, và đối số được bỏ qua.

+0

Cảm ơn, cả hai đều hoạt động, đã kết thúc bằng cách sử dụng phiên bản đầu tiên. – Bogdan

+0

Có cách nào để chỉ định loại dữ liệu khi xuất dữ liệu _without_ explictly cung cấp tên ô (ví dụ: A3)? – crmpicco

+0

@crmpicco - Không hiểu .... nếu bạn đang đặt giá trị ô, không chỉ định tên ô, PHPExcel sẽ biết giá trị ô bạn muốn đặt là gì? –

7

Giải pháp đơn giản nhất là sử dụng setCellValueExplicitByColumnAndRow ($ pColumn = 0, $ mũi = 1, $ pvalue = null, $ pDataType = PHPExcel_Cell_DataType :: TYPE_STRING),

$PHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow($columnPointer, $rowPointer, $value); 
+0

Điều này phù hợp với tôi –

0

Tôi đã xem qua chủ đề này khi tìm kiếm cho một giải pháp và there is my other answer có thể hữu ích cho ai đó trong trường hợp hoặc xóa cột/hàng khiến định dạng ô bị mất ...

1

Chỉ cần đi qua một giải pháp thay thế và tôi nghĩ tôi sẽ đăng nó ở đây. Điều này không yêu cầu sử dụng thư viện, chỉ cần định dạng các ô .xls bắt buộc khi tạo bảng html để xuất.

<td style="mso-number-format:'@';">your number w/leading zeroes here</td> 

Tôi hy vọng ai đó thấy nó hữu ích. Dưới đây là một tài liệu tham khảo hoàn chỉnh với mã định dạng:

http://www.ozgrid.com/Excel/CustomFormats.htm

0

Đối với tôi đây đã làm các trick

// Set the value explicitly as a string 
$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '0029', PHPExcel_Cell_DataType::TYPE_STRING); 
0

Bất cứ khi nào một ai đó tiền thu được như tôi đã làm, điều này có thể giúp:

$inputFileName = 'file.xls'; 
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName); 
$objWorkSheet = $objPHPExcel->getActiveSheet(); 
$objWorkSheet->getCell('A1')->setValueExplicit('0029', PHPExcel_Cell_DataType::TYPE_STRING); 

Như lấy cảm hứng từ this answer. Tôi hy vọng điều này giúp ai đó.

Các vấn đề liên quan