Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ถามเรื่องการ Export รายงาน เป็น Excel ใน Column ที่ข้อมูลเป็น ตัวเลข



 

ถามเรื่องการ Export รายงาน เป็น Excel ใน Column ที่ข้อมูลเป็น ตัวเลข

 



Topic : 049261



โพสกระทู้ ( 51 )
บทความ ( 0 )



สถานะออฟไลน์




คือ ผม Export รายงานให้เป็นในรูปแบบของ Excel

แต่ติดที่ ตรง Column ที่เป็นตัวเลข หากดึงออกมาตามปกติ $worksheet->write("B$xlsRow",$result["PDCode"], $xlsCellDesc); ตัวเลขที่ขึ้นต้นด้วย 0 จะถูกตั้ดทิ้งไป เช่น 00142 จะขึ้นแค่ 142 หรือ 00000 จะขึ้น 0 แต่หากเป็น 52035 หรือ rode-set001 ไม่มีปัญหาอะไร

ที่นี้ ผมลองเพิ่ม \r เข้าไป >> $worksheet->write("B$xlsRow","\r".$result["PDCode"], $xlsCellDesc); Output สามารถออกได้ตามปกติ ไม่ว่าจะเป็น 00142 หรือ 00000 หรือ 52035 หรือ rode-set001 แต่ เมื่อนำมาทำ VLOOKUP จะไม่สามารถทำได้ เนื่องจากมันเหมือนมีช่องว่างอยู่ข้างหน้าตัวเลข

จึงอยากถามว่า มีวิธีการ ทำให้เลข 0 สามารถโชว์ได้ตามปกติ ไม่ถูกตัดใน Excel นอกจากการใส่ "\r" อีกไหมครับ เพราะ ใส่ "\r" และมันเหมือนมีช่องว่างอยู่ข้างหน้า

หรือมีวิธีการ Set Column (Format Cells..) ให้เป็น text หรือ string ไหมครับ

ช่วยผมทีนะครับ ขอบคุณมากๆครับ

ปล. ลองใส่แล้ว ตรงตัวเลขจะมี ' อยู่ข้งหน้าอะครับ เช่น '00145 , '50236, '00000 อยากให้ไม่มี ' นำหน้าอะครับ TT

นี่ Code ครับ

Code (PHP)
<?
require_once "class/class.writeexcel_workbook.inc.php";
require_once "class/class.writeexcel_worksheet.inc.php";
include("connect.php");
$sdate=$_POST["sdate"];//2010-05-05
				$nsdate=$_POST["sdate"];
				$nsy=substr($nsdate,0,4);
				$nsm=substr($nsdate,5,2);
				$nsd=substr($nsdate,8,2);
				$nsdate=$nsd."/".$nsm."/".$nsy;
$edate=$_POST["edate"];
				$nedate=$_POST["edate"];
				$ney=substr($nedate,0,4);
				$nem=substr($nedate,5,2);
				$ned=substr($nedate,8,2);
				$nedate=$ned."/".$nem."/".$ney;
$outcode=$_POST["outcode"];

		 $sqloutname="select * from outlet where outcode='$outcode'";
		 $queryoutname=mysql_query($sqloutname);
		 $rows=mysql_fetch_array($queryoutname);
$token = md5(uniqid(rand(), true)); 
$fname= "Report.xls";
$workbook =& new writeexcel_workbook($fname);

$worksheet =& $workbook->addworksheet("รายงานการขาย");
$worksheet->set_margin_right(0.50);
$worksheet->set_margin_bottom(1.10);

## Set Format ##

$xlscelldesc_header =& $workbook->addformat();

$xlscelldesc_header->set_font('Angsana New');

$xlscelldesc_header->set_size(14);

$xlscelldesc_header->set_color('blue');

$xlscelldesc_header->set_bold(1);

$xlscelldesc_header->set_text_v_align(1);

$xlscelldesc_header->set_merge(1);

$xlsCellDesc =& $workbook->addformat();

$xlsCellDesc->set_font('Angsana New');

$xlsCellDesc->set_size(12);

$xlsCellDesc->set_color('black');

//$xlsCellDesc->set_bor(1);

$xlsCellDesc->set_align('left');

$xlsCellDesc->set_text_v_align(1);

## End of Set Format ##



## Set Column Width & Height กำหนดความกว้างของ Cell

$worksheet->set_column('A:A', 6.5);
$worksheet->set_column('B:B', 7.6 );
$worksheet->set_column('C:C', 5);
$worksheet->set_column('D:D', 5);
$worksheet->set_column('E:E', 12);
$worksheet->set_column('F:F', 12);
$worksheet->set_column('G:G', 12);
$worksheet->set_column('H:H', 12);
$worksheet->set_column('I:I', 15);
$worksheet->set_column('J:J', 8.5);
$worksheet->set_column('K:K', 9);
$worksheet->set_column('L:L', 10);
$worksheet->set_column('M:M', 12);
$worksheet->set_column('N:N', 13);
$worksheet->set_column('O:O', 13);


$celldesc_h = 16.50;


## Writing Data เพิ่มข้อมูลลงใน Cell



# กำหนดความสูงของ Cell

$worksheet->set_row(1, $celldesc_h); 

$worksheet->set_row(2, $celldesc_h);

$worksheet->set_row(3, $celldesc_h);

$worksheet->set_row(4, $celldesc_h);

$worksheet->set_row(5, $celldesc_h);




$worksheet->write(G3, " รายงานการขายประจำวันที่ :    ".$nsdate. "      ถึงวันที่       ".$nedate."        ห้าง      ".$rows["OutName"], $xlscelldesc_header);
$worksheet->write_blank(F6,$xlscelldesc_header);


$worksheet->write(A5,"วันที่", $xlscelldesc_header); 

$worksheet->write(B5,"รหัสสินค้า", $xlscelldesc_header); 

$worksheet->write(C5,"ชื่อสินค้า", $xlscelldesc_header); 

$worksheet->write(D5,"จำนวน", $xlscelldesc_header);

$worksheet->write(E5,"ราคาขายปลีกต่อชิ้น", $xlscelldesc_header);

$worksheet->write(F5,"ส่วนลดต่อชิ้น (บาท)", $xlscelldesc_header);

$worksheet->write(G5,"ราคาเก็บเงินต่อชิ้น", $xlscelldesc_header);

$worksheet->write(H5,"จำนวนเงินรวมที่เก็บได้", $xlscelldesc_header);

$worksheet->write(I5,"ส่วนลดการค้า", $xlscelldesc_header);

$worksheet->write(J5,"ส่วนลด (%)", $xlscelldesc_header);

$worksheet->write(K5,"ส่วนลดคูปอง (%)", $xlscelldesc_header);
$worksheet->write(L5,"ส่วนลดคูปอง ( บาท )", $xlscelldesc_header);
$worksheet->write(M5,"หมายเหตุ", $xlscelldesc_header);
$worksheet->write(N5,"รหัสจุดขาย", $xlscelldesc_header);
$worksheet->write(O5,"ชื่อจุดขาย", $xlscelldesc_header);
$worksheet->write(P5,"วันที่บันทึก", $xlscelldesc_header);
$worksheet->write(Q5,"PC", $xlscelldesc_header);




//$worksheet->write_blank(E6,$xlscelldesc_header);

//$worksheet->write(F6,"$price ", $xlscelldesc_header);

$xlsRow = 6;



# ตรงนี้คือดึงข้อมูลจาก mysql มาใส่ใน Cell
if($outcode=="0000000"){

$sql="select * 
from  saler  s 
inner join  outlet o on (s.outcode=o.outcode) 
inner join user u on (s.user_name=u.user_name) 
inner join product p on (p.pdcode = s.pdcode)
inner join discount d ON (d.discode = s.discode)
where onsale between '$sdate' and '$edate' 
order by s.onsale,s.discode,s.pdcode asc "; 

}else{

$sql="select * 
from  saler  s 
inner join  outlet o on (s.outcode=o.outcode) 
inner join user u on (s.user_name=u.user_name) 
inner join product p on (p.pdcode = s.pdcode)
inner join discount d ON (d.discode = s.discode)
where onsale between '$sdate' and '$edate' 
and   o.outcode='$outcode'
order by s.onsale,s.discode,s.pdcode asc ";

}


$query=mysql_query($sql);
$num=mysql_num_rows($query);
if($num==0){
echo "<script language='javascript'>alert('ไม่พบข้อมูล');</script>";    
print "<meta http-equiv=refresh content=0;URL=admin_1.php>"; 

exit();
}else{

				while($result= mysql_fetch_array($query)){
				$ndate=$result["Onsale"];//2010-03-01
				$y=substr($ndate,0,4);
				$m=substr($ndate,5,2);
				$d=substr($ndate,8,2);
				$onsale=$d."/".$m."/".$y;
				$ondate=$result["Onrecord"];
				$oy=substr($ondate,0,4);
				$om=substr($ondate,5,2);
				$od=substr($ondate,8,2);
				$onrecord=$od."/".$om."/".$oy;
				$namena=$result["UName"];
				$testna=$result["Outcode"];
				if($testna==00000000){
					$testna=$namena;
				}else{
					$testna="";
				}


++$i;  

$test=$result["PDCode"];
$test=$test;

$worksheet->set_row($xlsRow, 19.80);
$worksheet->write("A$xlsRow",$onsale, $xlsCellDesc);
$worksheet->write("B$xlsRow",$result["PDCode"], $xlsCellDesc); // ติดที่ตัวนี้ ถ้าไม่ใส่ \r ตัวข้างหน้าจะไม่มีช่องว่าง แต่เลข 0 ข้างหน้า จะถูกตัดทิ้งไป

$worksheet->write("C$xlsRow", $result["PDName"], $xlsCellDesc);

$worksheet->write("D$xlsRow", $result["Quantity"], $xlsCellDesc); 

$worksheet->write("E$xlsRow", $result["Price"], $xlsCellDesc);

$worksheet->write("F$xlsRow", $result["Dis_baht"], $xlsCellDesc);

$worksheet->write("G$xlsRow", $result["PricePerPiece"], $xlsCellDesc);

$worksheet->write("H$xlsRow", $result["Amount"], $xlsCellDesc);

$worksheet->write("I$xlsRow", $result["DisName"], $xlsCellDesc);

$worksheet->write("J$xlsRow", $result["Dispercent"], $xlsCellDesc);

$worksheet->write("K$xlsRow", $result["couponspercent"], $xlsCellDesc);

$worksheet->write("L$xlsRow", $result["couponsbaht"], $xlsCellDesc);

$worksheet->write("M$xlsRow", $result["Note"], $xlsCellDesc);
$worksheet->write("N$xlsRow","\r".$result["OutCode"], $xlsCellDesc);
$worksheet->write("O$xlsRow", $result["OutName"], $xlsCellDesc);
$worksheet->write("P$xlsRow", $onrecord, $xlsCellDesc);
$worksheet->write("Q$xlsRow", $testna, $xlsCellDesc);



$xlsRow++;


}
}

# เสร็จแล้วก็ส่งไฟล์ไปยัง Browser ครับแค่นี้ก็เสร็จแล้ว

$workbook->close();

header("Pragma: public");

header("Expires: 0");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 

header("Content-Type: application/force-download");

header("Content-Type: application/octet-stream");

header("Content-Type: application/download");

header("Content-Disposition: attachment; filename=".basename("DreamtoyReport.xls").";");

header("Content-Transfer-Encoding: binary\r\n");

header("Content-Length: ".filesize($fname));

readfile($fname); 

unlink($fname);

exit();

?>




Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-09-24 08:31:57 By : muaeenth99 View : 4952 Reply : 7
 

 

No. 1

Guest


ถามอะไรหน่อยครับ ของคุณนี่แสดงเป็นภาษไทยได้หรือเปล่าครับ ผมคิดว่าใช้คลาสเหมือนกันแต่ของผมมัน แสงดออกมเป็นภาษาต่างดาวครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-24 09:22:47 By : - -
 


 

No. 2

Guest


ตอนนี้ผมเปลี่ยนมาใช้ ของตัววนี้นะครับ รู้สึกว่าวิธีใช้จะคล้ายๆกัน
http://phpexcel.codeplex.com/
ดูใน doc ของตัวนี้ หน้า23 หน้าจะเป็นการ setformat แบบที่คุณต้องการนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-24 09:52:20 By : - -
 

 

No. 3



โพสกระทู้ ( 51 )
บทความ ( 0 )



สถานะออฟไลน์


ของผมแสดงเป็นภาษาไทยได้นะครับ class ตัวนี้

แต่ ผมไม่มีตัว setformatt เลยอะครับ


ใครพอจะมีวิธีอื่นบ้างไหมอะครับ

ขอบคุณมากๆครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-24 14:44:28 By : muaeenth99
 


 

No. 4

Guest


ไป download ตัวนี้อะครับ $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setWrapText(true);ใช้ได้แน่นอน ลองดูเเล้ว ลักษณะการใช้งานก็คล้ายๆกัน (ผมว่าอันนี้ง่ายกว่าหน่อยๆอยู่ด้วยนะ)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-24 15:27:16 By : - -
 


 

No. 5



โพสกระทู้ ( 51 )
บทความ ( 0 )



สถานะออฟไลน์


ตัวเดิมผม ยังไงก็ไม่สามารถทำให้มันขึ้นเลข 0 ขางหน้าได้เลยใช่ไหมครับ TT ขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-27 13:41:45 By : muaeenth99
 


 

No. 6

Guest


ถ้าใช้ PHPExcel
$objPHPExcel->getActiveSheet()->getCell('A1')->setValue(19);
$objPHPExcel->getActiveSheet()->getStyle('A1')->getNumberFormat()->setFormatCode('0000'); // will show as 0019 in Excel

บรทัดที่ 2 คือ กำหนดการแสดงค่าให้มันบอกกมาเป็น 0000 อย่าง A1 กำหนดให้มีค่า = 19
เวลามันแสดงค่าออกมาก็เป็น 0019 นะครับ ที่คุณต้องการใช่แบบนี้หรือเปล่า
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-27 15:16:20 By : - -
 


 

No. 7



โพสกระทู้ ( 51 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่ใช่แบบนั้นครับ ที่ผมต้องการคือ ผมมี เลข 00145, 50568, 00098 อยู่แล้วอะครับ

แต่พอลง Excel มันกลับกลายเป็น 145,50568,98 ผมเลยเพิ่ม "\r" เข้าไป แล้วผลลัพท์ที่ได้ก็เป็น 00145,50568,00098 แต่ปัญหาติดที่

เพราะใช้ \r ข้างหน้าตัวเลขพวกนี้ เลยมีช่องว่างที่มองไม่เห็นเกิดขึ้น เวลาผมใส่ A นำหน้า ด้วยสูตร Excel เพื่อให้มันกลายเป็น A00145,A50568,A00098 เพื่อเอาไปเทียบกับตัว Code อีกที ไม่สามารถเทียบได้เนื่องจากมีช่องว่างข้างหน้าตัวเลข ต่อให้ผมมา setformat ทีหลังให้ column นั้นเป็น text แต่มันก็สายไปแล้วอะครับ มันมีช่องว่างอยู่แล้วเพราะ \r

ต้องใช่คำสั่ง Right ไปเพื่อเอาตัวเลข ไปทำสูตรแทนอะครับ TT

พอจะมีวิธีไหนอีกไหมอะครับ ขอบคุณมากๆครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-29 13:14:22 By : muaeenth99
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ถามเรื่องการ Export รายงาน เป็น Excel ใน Column ที่ข้อมูลเป็น ตัวเลข
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่