利用PHPExcel转Excel柱形图
这在附另一个转柱形图的效果及代码.
原PHP报表效果:
转成Excel后的效果:
vcD4KPHA+uL3Jz7T6wus6PC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;">getProperties()->setCreator("XiongChuanLiang")
->setLastModifiedBy("XiongChuanLiang")
->setTitle("明细表");
$objActSheet = $objPHPExcel->getActiveSheet();
$objActSheet->getColumnDimension("A")->setWidth(12);
$objActSheet->getColumnDimension("B")->setWidth(20);
$objActSheet->getColumnDimension("C")->setWidth(12);
$objActSheet->getColumnDimension("D")->setWidth(20);
$objActSheet->getColumnDimension("E")->setWidth(20);
$objActSheet->getColumnDimension("F")->setWidth(12);
$objActSheet->getColumnDimension("G")->setWidth(20);
$objActSheet->getColumnDimension("H")->setWidth(18);
$objActSheet->getColumnDimension("I")->setWidth(18);
$objActSheet->getColumnDimension("J")->setWidth(30);
$objActSheet->getColumnDimension("K")->setWidth(20);
$objActSheet->getRowDimension(1)->setRowHeight(30);
$objActSheet->getRowDimension(2)->setRowHeight(16);
$objActSheet->getRowDimension(3)->setRowHeight(16);
$objActSheet->mergeCells("A1:K1");
$objActSheet->mergeCells("A2:K2");
$objActSheet->mergeCells("A3:K3");
//设置居中对齐
$objActSheet->getStyle("A1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objActSheet->getStyle("A2")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objActSheet->getStyle("A3")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objFontA1 = $objActSheet->getStyle("A1")->getFont();
$objFontA1->setSize(18);
$objFontA1->setBold(true);
/////////////////////////////////////////////////////////////////////////
$sqlSelect="SELECT ......
FROM (
......
) k
order by ...... ";
$sql = mysql_query($sqlSelect);
$info = mysql_fetch_array($sql);
$objActSheet->setCellValue("A1", "明细表");
if(strlen( trim( $rent_time_begin)) > 0 && strlen( trim( $rent_time_end)) > 0 )
{
$objActSheet->setCellValue("A2","(".$rent_time_begin." ~ ".$rent_time_end.")");
}
$objActSheet->setCellValue("A3", "(demo)");
$row=4;
$objActSheet->setCellValue("A".$row, "...");
$objActSheet->setCellValue("B".$row, "...");
$objActSheet->setCellValue("C".$row, "...");
$objActSheet->setCellValue("D".$row,"...");
$objActSheet->setCellValue("E".$row, "...");
$objActSheet->setCellValue("F".$row, "...");
$objActSheet->setCellValue("G".$row, "...");
$objActSheet->setCellValue("H".$row, "...");
$objActSheet->setCellValue("I".$row, "...");
$objActSheet->setCellValue("J".$row, "...");
$row=5;
do{
$objActSheet->setCellValue("A".$row, $info["..."]);
$objActSheet->setCellValue("B".$row, $info["..."]);
$objActSheet->setCellValue("C".$row, $info["..."]);
$objActSheet->setCellValue("D".$row, $info["..."]);
$objActSheet->setCellValue("E".$row, $info["..."]);
$objActSheet->setCellValue("F".$row, $info["..."]);
$objActSheet->setCellValue("G".$row, $info["..."]);
$objActSheet->setCellValue("H".$row, $info["..."]);
$objActSheet->setCellValue("I".$row, $info["..."]);
$objActSheet->setCellValue("J".$row, $info["..."]);
//分别累加
$tmpstatus = $info["..."];
if($tmpstatus == "A"){
$status1++;
}else if($tmpstatus == "B"){
$status2++;
}else if($tmpstatus == "C"){
$status3++;
}else if($tmpstatus == "D"){
$status4++;
}else{
$status0 ++;
}
$row++;
}while($info=mysql_fetch_array($sql));
/////////////////////////////////////////////////////////////////////////
for ($currrow = 4; $currrow getStyle("A".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("A".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("A".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("A".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("B".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("B".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("B".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("B".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("C".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("C".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("C".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("C".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("D".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("D".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("D".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("D".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("E".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("E".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("E".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("E".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("F".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("F".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("F".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("F".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("G".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("G".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("G".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("G".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("H".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("H".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("H".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("H".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("I".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("I".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("I".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("I".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("J".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("J".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("J".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("J".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
}
//////////////////////////////////////////
/// bar
///////////////////////////////////////////////
$row += 3;
$tabInitRow = $row;
$objActSheet->setCellValue("A".$row, "状态");
$objActSheet->setCellValue("B".$row, "总数");
$row++;
$objActSheet->setCellValue("A".$row, "...");
$objActSheet->setCellValue("B".$row, $status0);
$row++;
$objActSheet->setCellValue("A".$row, "...");
$objActSheet->setCellValue("B".$row, $status1);
$row++;
$objActSheet->setCellValue("A".$row, "...");
$objActSheet->setCellValue("B".$row, $status2);
$row++;
$objActSheet->setCellValue("A".$row, "...");
$objActSheet->setCellValue("B".$row, $status3);
$row++;
$objActSheet->setCellValue("A".$row, "...");
$objActSheet->setCellValue("B".$row, $status4);
$tabLastRow = $row;
for ($currrow = $tabInitRow; $currrow getStyle("A".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("A".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("A".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("A".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("B".$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("B".$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("B".$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
$objActSheet->getStyle("B".$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );
}
// Set the Labels for each data series we want to plot
// Datatype
// Cell reference for data
// Format Code
// Number of datapoints in series
// Data values
// Data Marker
$dataseriesLabels = array(
new PHPExcel_Chart_DataSeriesValues("String", "Worksheet!$B$".$tabInitRow , NULL, 1), // 2010
);
//new PHPExcel_Chart_DataSeriesValues("String", "Worksheet!$C$1", NULL, 1), // 2011
//new PHPExcel_Chart_DataSeriesValues("String", "Worksheet!$D$1", NULL, 1), // 2012
// Set the X-Axis Labels
// Datatype
// Cell reference for data
// Format Code
// Number of datapoints in series
// Data values
// Data Marker
$tabInitRow ++;
$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues("String", "Worksheet!$A$".$tabInitRow.":$A$".$tabLastRow , NULL, 4), // Q1 to Q4
);
// Set the Data values for each data series we want to plot
// Datatype
// Cell reference for data
// Format Code
// Number of datapoints in series
// Data values
// Data Marker
$dataSeriesValues = array(
new PHPExcel_Chart_DataSeriesValues("Number", "Worksheet!$B$".$tabInitRow.":$B$".$tabLastRow, NULL, 4),
);
// Build the dataseries
$series = new PHPExcel_Chart_DataSeries(
PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType
PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping
range(0, count($dataSeriesValues)-1), // plotOrder
$dataseriesLabels, // plotLabel
$xAxisTickValues, // plotCategory
$dataSeriesValues // plotValues
);
// Set additional dataseries parameters
// Make it a horizontal bar rather than a vertical column graph
$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_BAR);
// Set the series in the plot area
$plotarea = new PHPExcel_Chart_PlotArea(NULL, array($series));
// Set the chart legend
$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false);
$title = new PHPExcel_Chart_Title("状态汇总");
$yAxisLabel = new PHPExcel_Chart_Title("总数");
// Create the chart
$chart = new PHPExcel_Chart(
"chart1", // name
$title, // title
$legend, // legend
$plotarea, // plotArea
true, // plotVisibleOnly
0, // displayBlanksAs
NULL, // xAxisLabel
$yAxisLabel // yAxisLabel
);
// Set the position where the chart should appear in the worksheet
$tabLastRow += 2;
$chart->setTopLeftPosition("A".$tabLastRow );
$tabLastRow += 15;
$chart->setBottomRightPosition("F".$tabLastRow );
// Add the chart to the worksheet
$objActSheet->addChart($chart);
//////////////////////////////////////////////////////////////////////////////////////
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
$filename = "明细表_".date("Y_m_d").".xlsx";
// Redirect output to a client’s web browser (Excel2007)
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
//header("Content-Disposition: attachment;filename="".$filename."""); //devrent.xlsx
////////////////////////////////////////
//处理中文文件名乱码问题
$ua = $_SERVER["HTTP_USER_AGENT"];
$encoded_filename = urlencode($filename);
$encoded_filename = str_replace("+", "%20",$encoded_filename);
header("Content-Type: application/octet-stream");
if (preg_match("/MSIE/", $ua)) {
header("Content-Disposition: attachment;filename="" . $encoded_filename . """);
}else if (preg_match("/Firefox/", $ua)){
header("Content-Disposition: attachment; filename*="utf8\"\"" . $filename . """);
}else {
header("Content-Disposition: attachment; filename="" . $filename . """);
}
////////////////////////////////////////
header("Cache-Control: max-age=0");
// If you"re serving to IE 9, then the following may be needed
header("Cache-Control: max-age=1");
// If you"re serving to IE over SSL, then the following may be needed
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header ("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); // always modified
header ("Cache-Control: cache, must-revalidate"); // HTTP/1.1
header ("Pragma: public"); // HTTP/1.0
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");
$objWriter->setIncludeCharts(TRUE);
$objWriter->save("php://output");
exit;
MAIL: xcl_168@aliyun.com
BLOG: http://blog.csdn.net/xcl168

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。
