ถ้าข้อมูลชื่อซ้ำกันในรายงาน excel จะยุบรวมยังไงคะ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ถ้าข้อมูลชื่อซ้ำกันในรายงาน excel จะยุบรวมยังไงคะ

ถ้าข้อมูลชื่อซ้ำกันในรายงาน excel จะยุบรวมยังไงคะ
คือว่ารบกวนสอบถามค่ะ คือค่า EVP บางอันอันมีข้อมูลหลายค่าค่ะ แต่ว่าอยากยุบชื่อที่ซ้ำกันให้เหลืออันเดียวแล้ว merge cell แต่ข้อมูลอย่างอื่นเหมือนเดิมต้องทำอย่างไรคะ ใช้คำสั่ง merge อย่างไรคะ ขอบคุณค่ะ

EVP VP/MD Departmental Risks
     
DB DI พนักงานไม่มีความมั่นใจในวิธีประเมินผลการปฏิบัติงาน
DB DW อาคารสำนักงานเสียหายจากอัคคีภัย
DB DW ภัยจากการก่อวินาศกรรมทำให้เกิดความเสียหายต่ออาคารและบุคคล
DD DZ CCCCCCCCCCCCC
DD DZ 555
DD DZ เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ
DD DZ hum
DD DZ hhhhhh
DD DZ 005 แผนพัฒนาระบบสารสนเทศด้านบริหารความเสี่ยง
DD DZ Test
DD DZ การ Implement ระบบ RMS สำหรับ Corporate Risk อาจจะไม่แล้วเสร็จทันกำหนดใช้งานในปี 2555
DD DZ test risk actual
DD DZ test
DD DZ ccccccc
DD DZ test test test test test test
DD DZ dfasgf
DD DZ TEST1
DD DZ 002 แผนพัฒนาระบบสารสนเทศด้านบริหารความเสี่ยง
DD DZ การ Implement ระบบ RMS สำหรับ Corporate Risk อาจจะไม่แล้วเสร็จทันกำหนดใช้งาน
DD DZ test actual 2
DD DZ การ Implement ระบบ RMS สำหรับ Corporate Risk อาจจะไม่แล้วเสร็จทันกำหนดใช้งาน
DD DZ fdhgfjfgjhgfkk
DD DZ ฝ่ายต่าง ๆ ยังไม่สามารถใช้กระบวนการบริหารความเสี่ยงอย่างเป็นรูปธรรมจนสามารถใช้เป็นระบบเตือนภัยล่วงหน้า
DD DZ การจัดทำการประเมินการควบคุมด้วยตนเอง ในระดับกระบวนการสำหรับกระบวนการที่สำคัญยังไม่ครอบคลุมทั้งองค์กร
DD DZ การดำเนินการบริหารความเสี่ยงไม่เป็นไปตามแผนงานประจำปี
DD DZ New RMS ไม่แล้วเสร็จตามกำหนด
DD DZ nmbjkjkljk;
DD DZ 001 โครงการพัฒนากระบวนการด้านการบริหารความเสี่ยง (Enterprise Risk Management) แบบทำงานร่วมกัน (Co-Source)
DD DZ 006  โครงการพัฒนากระบวนการด้านการบริหารความเสี่ยง (Enterprise Risk Management) แบบทำงานร่วมกัน (Co-Source)
DD DZ การระบุความเสี่ยง
DD DZ รายได้ไม่ได้ตามเป้าหมาย
DD D3 การดำเนินการตามแผนกลยุทธ์ไม่บรรลุผลตามเป้าหมาย
DD D3 ขาดความพร้อมของบุคลากรและผู้สืบทอดตำแหน่ง


Sudarat2536 110.77.229.xxx 25-05-2015 10:29:26

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ถ้าให้เป็นประมาณนี้

EVP VP/MD Departmental Risks
     
DB DI พนักงานไม่มีความมั่นใจในวิธีประเมินผลการปฏิบัติงาน
  DW อาคารสำนักงานเสียหายจากอัคคีภัย
  DW ภัยจากการก่อวินาศกรรมทำให้เกิดความเสียหายต่ออาคารและบุคคล
DD DZ CCCCCCCCCCCCC
  DZ 555
  DZ เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ
  DZ hum
  DZ hhhhhh


ใช้วิธีไม่แสดงข้อมูลแทนน่าจะได้ ส่วนการ merge ด้วย code  php น่าจะทำไม่ได้


ninenik 180.183.111.xxx 25-05-2015
 ความคิดเห็นที่ 2

คือประมาณว่าถ้า ชื่อเดียวกันหลายๆอันก็ให้เหลืออันเดียวเเล้วค่อยขีดเส้น อ่าาค่ะ 

ชื่อผู้ชื้อ รายการ สิ้นค้า
a a 1
  b 1
  1
    2
    3
  d  
b a  
  b  
  c  


sudarat2536 110.77.229.xxx 25-05-2015 10:38
 ความคิดเห็นที่ 3
ต้องทำอย่างไรอ่าคะ ?


sudarat2536 1.20.162.xxx 25-05-2015 10:40
 ความคิดเห็นที่ 4
โค้ดเก่าน่าจะประมาณนี้

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

<div style="margin:auto;width:500px;">

<table width="300" border="0" cellspacing="00" cellpadding="0">
  <tr>
    <td align="center">Top</td>
    <td align="center">Sub</td>
  </tr>
<?php 
for($i=1;$i<=10;$i++){
    $temp_data1=null;
    $temp_data2=null;
    $data_show=1;    // 1 แสดง 0 ไม่แสดง
    for($v=1;$v<=3;$v++){
        $temp_data1=$i;
        if($temp_data2==null){
            $temp_data2=$temp_data1;
            $data_show=1;   
        }else{
            if($temp_data1==$temp_data2){
                $temp_data2=$i;
                $data_show=0; 
                $temp_data2=$temp_data1;
            }
        }   
?>  
    
  <tr>
    <td align="center">
    <?php if($data_show==1){?>
    <?=$i?>
    <?php } ?>
    </td>
    <td align="center"><?=$v?></td>
  </tr>
<?php } } ?>
</table>    
    
</div>    
    
</body>
</html>


ใช้กับฐานข้อมูลต้องประยุกต์เอา ถ้าใช้หลาย คอลัมน์ต้องเพิ่มตัวแปร

<table width="300" border="0" cellspacing="00" cellpadding="0">
  <tr>
    <td align="center">Top</td>
    <td align="center">Sub</td>
    <td align="center">Data</td>
  </tr>
<?php 
.... ...
... ..    
while($rs=mysql_fetch_array($qr)){
    $temp_data1=null;
    $temp_data2=null;
    $data_show=1;    // 1 แสดง 0 ไม่แสดง
    $temp_data1=$rs['ฟิลด์เทียบแรก'];
    if($temp_data2==null){
        $temp_data2=$temp_data1;
        $data_show=1;   
    }else{
        if($temp_data1==$temp_data2){
            $temp_data2=$rs['ฟิลด์เทียบแรก'];
            $data_show=0; 
            $temp_data2=$temp_data1;
        }
    }   
    
    $temp_data3=null;
    $temp_data4=null;
    $data_show2=1;    // 1 แสดง 0 ไม่แสดง
    $temp_data3=$rs['ฟิลด์เทียบที่สอง'];
    if($temp_data4==null){
        $temp_data4=$temp_data3;
        $data_show2=1;   
    }else{
        if($temp_data3==$temp_data4){
            $temp_data4=$rs['ฟิลด์เทียบที่สอง'];
            $data_show2=0; 
            $temp_data4=$temp_data3;
        }
    }       
?>  
    
  <tr>
    <td align="center">
    <?php if($data_show==1){?>
    <?=$rs['ฟิลด์เทียบแรก']?>
    <?php } ?>
    </td>
    <td align="center">
    <?php if($data_show2==1){?>
    <?=$rs['ฟิลด์เทียบที่สอง']?>
    <?php } ?>      
    </td>
    <td align="center"><?=$v?></td>
  </tr>
<?php }  ?>
</table>    


ninenik 180.183.111.xxx 25-05-2015
 ความคิดเห็นที่ 5
อ่า คือว่าเเล้วถ้าเราจะสร้างเงื่อนไขเช็คเฉพาะ column แบบว่าถ้า column 1 แถว 2 มีเท่ากับ column 1 แถว 3 ให้ merge cell เเล้วถ้าไม่เท่าให้ขีดเส้นใต้อะไรแบบนี้จะได้หรือป่าวคะ ?  


sudarat2536 118.174.64.xxx 26-05-2015 13:57
 ความคิดเห็นที่ 6
ใช้ PHPExcel หรือป่าว ถ้าประยุกต์ขนาดนั้น ก็คงจะยากพอสมควร

เอาโค้ดนี้ไปดูเป็นแนวทาง  

<?php
require_once 'PHPExcel/Classes/PHPExcel.php';  


// Create new PHPExcel object
echo date('H:i:s') , " Create new PHPExcel object" , EOL;
$objPHPExcel = new PHPExcel();

// Set document properties
echo date('H:i:s') , " Set document properties" , EOL;
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
							 ->setLastModifiedBy("Maarten Balliauw")
							 ->setTitle("PHPExcel Test Document")
							 ->setSubject("PHPExcel Test Document")
							 ->setDescription("Test document for PHPExcel, generated using PHP classes.")
							 ->setKeywords("office PHPExcel php")
							 ->setCategory("Test result file");


$objPHPExcel->getDefaultStyle()
    ->getAlignment()
    ->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP)
    ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);  //HORIZONTAL_CENTER //VERTICAL_CENTER

// Add some data
echo date('H:i:s') , " Add some data" , EOL;
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Top')
            ->setCellValue('B1', 'Sub');

$row_excel=1;
$total_data=9;  // ค่าจำนวนแถวทั้ังหมด ถ้าประยุกต์ก็ดึง num_row ของตาราง
$num_data=0; // จำนวนการนับข้อมูล
for($i=1;$i<=3;$i++){  
    $temp_data1=null;  
    $temp_data2=null;  
    $data_show=1;    // 1 แสดง 0 ไม่แสดง  
    for($v=1;$v<=3;$v++){  
        $num_data++;
        $row_excel++;
        $temp_data1=$i;  
        if($temp_data2==null){  
            $temp_data2=$temp_data1;  
            $data_show=1;   
            $row_start=$row_excel;            
        }else{  
            if($temp_data1==$temp_data2){  
                $data_show=0;   
                $temp_data2=$temp_data1;    
                $row_start2=$row_start;
            }  
        }  
        $beginCol='A'.$row_start2;
        
        $col1=($data_show==1)?$i:"";
        
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A'.$row_excel, $col1)
            ->setCellValue('B'.$row_excel, $v);
        
        // ถ้ามากกว่าแถวที่เป็นหัวข้อ และมีการแสดงข้อมูล หรือ เป็นข้อมูลแถวสุดท้าย
        if($row_excel>2 && $data_show==1 || $num_data==$total_data){
            if($num_data==$total_data){ // กำหนด แถวสุดท้ายที่จะ merge
                $e=$row_excel;
                $endCol='A'.$e;               
            }else{ // กำหนด แถวที่จะ merge
                $e=$row_excel-1;
                $endCol='A'.$e;
            }      
            $objPHPExcel->setActiveSheetIndex(0)->mergeCells($beginCol.':'.$endCol);
        }
        
} }         

//$objPHPExcel->getActiveSheet()->setCellValue('A8',"HellonWorld");
//$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1);
//$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true);


// Rename worksheet
echo date('H:i:s') , " Rename worksheet" , EOL;
$objPHPExcel->getActiveSheet()->setTitle('Simple');


// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);


// Save Excel 2007 file
echo date('H:i:s') , " Write to Excel2007 format" , EOL;
$callStartTime = microtime(true);

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
$callEndTime = microtime(true);
$callTime = $callEndTime - $callStartTime;

echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL;
// Echo memory usage
echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL;


// Save Excel 95 file
echo date('H:i:s') , " Write to Excel5 format" , EOL;
$callStartTime = microtime(true);

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save(str_replace('.php', '.xls', __FILE__));
$callEndTime = microtime(true);
$callTime = $callEndTime - $callStartTime;

echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL;
// Echo memory usage
echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL;


// Echo memory peak usage
echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL;

// Echo done
echo date('H:i:s') , " Done writing files" , EOL;
echo 'Files have been created in ' , getcwd() , EOL;

?>


เอาตัวอย่างไปรันดู ไม่เคยใช้ PHPExcel ,มาก่อนเห็นหลายคนใช้ น่าสนใจดี 


ninenik 180.183.136.xxx 26-05-2015
 ความคิดเห็นที่ 7
ขอบคุณมากค่ะเดี๋ยวไปลองทำก่อนนะคะ ^^


sudarat2536 110.77.229.xxx 26-05-2015 16:22
 ความคิดเห็นที่ 8
	


if ($numrisk>0) {
			
$fnameprog= "riskkrinew".date("His").".xls";
$fname = tempnam("/tmp",$fnameprog);
$workbook = &new writeexcel_workbook($fname);

if ($reptype=='division') 	{ $typereport="ระดับ EVP";  $worksheet = &$workbook->addworksheet("ระดับ EVP"); }
if ($reptype=='department') {	$typereport="ระดับ VP"; $worksheet = &$workbook->addworksheet("ระดับ VP");  }
if ($reptype=='summary')  { $typereport="ระดับ VP/EVP ทั้งองค์กร"; $worksheet = &$workbook->addworksheet("ระดับ VP/EVP ทั้งองค์กร");  }
$worksheet->hide_gridlines(2);
$worksheet->set_landscape();
$worksheet-> fit_to_pages(1,0);
$worksheet->set_margins(0.25);

$company =& $workbook->addformat();
$company->set_bold();
$company->set_underline();
$company->set_align('center');
$company->set_size(12);

$showdate =& $workbook->addformat();
$showdate->set_align('right');
$showdate->set_size(7);

$title1 =& $workbook->addformat();
$title1->set_bold();
$title1->set_align('center');
$title1->set_size(12);

$title2 =& $workbook->addformat();
$title2->set_align('left');
$title2->set_text_wrap();
$title2->set_size(12);

$title3 =& $workbook->addformat();
$title3->set_bold();
$title3->set_align('left');
$title3->set_size(12);

$subtitle =& $workbook->addformat();
$subtitle->set_bold();
$subtitle->set_underline();
$subtitle->set_align('left');
$subtitle->set_left();
$subtitle->set_right();
$subtitle->set_size(12);

$header1=& $workbook->addformat();
$header1->set_bold();
$header1->set_underline();
$header1->set_align('left');
$header1->set_size(12);

$header2=& $workbook->addformat();
$header2->set_bold();
$header2->set_fg_color('silver');
$header2->set_align('center');
$header2->set_valign('top');
$header2->set_text_v_align(1);
$header2->set_text_wrap();
$header2->set_top();
$header2->set_bottom();
$header2->set_left();
$header2->set_right();
$header2->set_size(12);


$detail1 =& $workbook->addformat();
$detail1->set_align('left');
$detail1->set_valign('top');
$detail1->set_text_wrap();
$detail1->set_left();
$detail1->set_right();
$detail1->set_size(12);

$detail2 =& $workbook->addformat();
$detail2->set_align('center');
$detail2->set_valign('top');
$detail2->set_text_wrap();
$detail2->set_left();
$detail2->set_right();
$detail2->set_size(12);

$detail3=& $workbook->addformat();
$detail3->set_align('left');
$detail3->set_valign('top');
$detail3->set_text_wrap();
$detail3->set_left();
$detail3->set_right();
$detail1->set_top(); 
$detail3->set_bottom();
$detail3->set_size(12);

$worksheet->set_column(0,0,8);
$worksheet->set_column(1,1,8);
$maxcol=2;  
$worksheet->set_column($maxcol,$maxcol,43); $maxcol++;
$worksheet->set_column($maxcol,$maxcol,21); $maxcol++;
$worksheet->set_column($maxcol,$maxcol,21); $maxcol++;    
$worksheet->set_column($maxcol,$maxcol,21); $maxcol++;   
$worksheet->set_column($maxcol,$maxcol,21); $maxcol++;   
$worksheet->set_column($maxcol,$maxcol,21);                

$worksheet->write(1, 0,  "รายการปี ".$f_riskyear ,$title1);
$worksheet->merge_cells(1,0,1,$maxcol);
$row=4;
$worksheet->write($row,0,"EVP",$header2);
$worksheet->merge_cells($row,0,$row+1,0);

$worksheet->write($row,1,"VP/MD",$header2);
$worksheet->merge_cells($row,1,$row+1,1);

$worksheet->write($row,2,"Departmental Risks",$header2);
$worksheet->merge_cells($row,2,$row+1,2);
$col=3;
if ($reptype!='department') { 
		$worksheet->write($row,$col,"แผนก",$header2); 
		$worksheet->merge_cells($row,$col,$row+1,$col); $col++;
}
for ($i=0; $i<$col; $i++)  $worksheet->write($row+1,$i,"",$header2);
for ($i=$col; $i<$col+5; $i++)  $worksheet->write($row,$i,"",$header2);  
$worksheet->write($row,$col,"Key Risk Indicator (KRI)",$header2);
$worksheet->merge_cells($row,$col,$row,$col+4);
$worksheet->write($row+1,$col,"Measures",$header2);
$worksheet->write($row+1,$col+1,"Target",$header2);
$worksheet->write($row+1,$col+2,"Trigger",$header2);
$worksheet->write($row+1,$col+3,"Threshold",$header2);
$worksheet->write($row+1,$col+4,"Actual",$header2);
$col+=7; 
$worksheet->repeat_rows($row,$row+1);
					$row+=2;
					$i=0;
					while ($i<$numrisk)	{
                       
							 mysql_data_seek($dbqueryI2,$i);
							$info=mysql_fetch_array($dbqueryI2);
							$col=0;
						
				$worksheet->write($row,0,stripslashes($info[divisionShortThai]),$detail3);  //ให้ค่านี้รวมเหลือชื่เดียว
				$worksheet->write($row,1,stripslashes($info[deptShortThai]),$detail3);
				$worksheet->write($row,2,stripslashes($info[risksubject]),$detail3);
				$worksheet->write($row,3,stripslashes($info[measures]),$detail3);
				$worksheet->write($row,4,stripslashes($info[target]),$detail3);
			        $worksheet->write($row,5,stripslashes($info[trigger]),$detail3);
				$worksheet->write($row,6,stripslashes($info[threshold]),$detail3);
				$worksheet->write($row,7,stripslashes($info[actual]),$detail3);
							
							$row++;
							$i++;
							}
							
							


sudarat2536 118.174.64.xxx 26-05-2015 16:28
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ