- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如果我使用 Excel2007 writer,它可以工作,但是当我将它写成 HTML 时,公式根本不起作用。
这是我的代码。它在 CodeIgniter 中
function monthly_plan(){
$data['page_title'] = 'Monthly Plan';
$data['main'] = 'reports/monthly_plan';
$data['lines'] = $this->line_model->getLines();
if($this->input->post('generate')){
$m = $this->input->post('month');
$pid = $this->input->post('process_id');
$date_start = date('Y-'.$m.'-01');
$date_end = date('Y-'.$m.'-t');
$last_month = date('Y-m-d', strtotime($date_start.' -1 day'));
$date_max = date('t');
$schedules = $this->getScheduleInProcess($pid, $date_start, $date_end, true, true);
$process = $this->process_model->getProcess($pid);
$separators = []; $item_names = [];
// EXCEL
$this->load->library('excel');
$this->excel->setActiveSheetIndex(0);
$sheet = $this->excel->getActiveSheet();
$sheet->setTitle('Planning Bulanan');
$sheet->setCellValue('A2', 'Process');
$sheet->setCellValue('B2', $process->process_name);
$sheet->setCellValue('C2', 'L/M');
$last_num = 2; // row terakhir
$last_num_counter = 2; // row terakhir untuk counter
for($i = 4; $i <= $date_max + 3; $i++){
$cell = $this->translate_cell($i);
$sheet->setCellValue($cell.'2', date(($i - 3).'-M'));
}
foreach($schedules as $schedule){
$item = getItem2($schedule->item_id);
$route = $this->routing_model->getSingleRoute($schedule->routing_id);
$sheet->setCellValue('A'.(++$last_num), $item->item_number);
$sheet->setCellValue('B'.$last_num, 'Ori PLAN Dlvry');
$sheet->setCellValue('C'.$last_num, '');
$item_names[] = $last_num;
$sheet->setCellValue('A'.(++$last_num), '');
$sheet->setCellValue('B'.$last_num, 'Cum Plan');
$sheet->setCellValue('C'.$last_num, '0');
$sheet->setCellValue('A'.(++$last_num), $this->is_lot($route) ? '':$route->ct);
$sheet->setCellValue('B'.$last_num, 'plan prod');
$sheet->setCellValue('C'.$last_num, '');
$sheet->setCellValue('A'.(++$last_num), $this->is_lot($route) ? '':$route->efficiency);
$sheet->setCellValue('B'.$last_num, 'ACT');
$sheet->setCellValue('C'.$last_num, '');
$sheet->setCellValue('A'.(++$last_num), $this->is_lot($route) ? $route->capacity:"=60*A".($last_num - 1)."/A".($last_num - 2));
$sheet->setCellValue('B'.$last_num, 'Cum Act');
$sheet->setCellValue('C'.$last_num, $this->getStockToDate($schedule->item_id, $process, $last_month));
$sheet->setCellValue('A'.(++$last_num), '');
$sheet->setCellValue('B'.$last_num, 'Diff');
$sheet->setCellValue('C'.$last_num, '');
$sheet->setCellValue('A'.(++$last_num), '');
$sheet->setCellValue('B'.$last_num, '');
for($i = 4; $i <= $date_max + 3; $i++){
$cell = $this->translate_cell($i);
$pc = $this->translate_cell($i-1); // previous cell
$date = date('Y-'.$m.'-'.($i - 3));
$sheet->setCellValue($cell.($last_num_counter + 1), $this->getPlanningOnDate($route->process_id, $route->item_id, $date)); // ori plan
$sheet->setCellValue($cell.($last_num_counter + 2), "=$pc".($last_num_counter + 2)."+".$cell.($last_num_counter + 1)); // cum plan
$sheet->setCellValue($cell.($last_num_counter + 3), ''); // plan prod
$sheet->setCellValue($cell.($last_num_counter + 4), ''); // act
$sheet->setCellValue($cell.($last_num_counter + 5), "=$pc".($last_num_counter + 5)."+".$cell.($last_num_counter + 4)); // cum act
$sheet->setCellValue($cell.($last_num_counter + 6), "=$cell".($last_num_counter + 5)."+$cell".($last_num_counter + 1)); //div
}
$last_num_counter += 7;
$separators[] = $last_num_counter;
}
$last_col = $sheet->getHighestDataColumn();
$last_row = $sheet->getHighestDataRow();
$ranges = $this->createColumnsArray($last_col);
$sheet->freezePane('C3');
$sheet->getStyle("A2:$last_col$last_row")->applyFromArray(array(
'borders'=>['allborders'=>['style'=>PHPExcel_Style_Border::BORDER_THIN]],
'font'=>['size'=>'8']
));
$sheet->getStyle("A3:A$last_row")->applyFromArray(array(
'alignment'=>['horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER]
));
$sheet->getStyle("C2:C$last_row")->applyFromArray(array(
'alignment'=>['horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER]
));
$sheet->getStyle("C1:C$last_row")->applyFromArray(array(
'borders'=>['allborders'=>['style'=>PHPExcel_Style_Border::BORDER_NONE]]
));
foreach($ranges as $range){
if($range != 'C'){
$sheet->getColumnDimension($range)->setAutoSize(true);
}
}
for($i = 4; $i <= $date_max + 3; $i++){
$cell = $this->translate_cell($i);
$pc = $this->translate_cell($i-1); // previous cell
$date = date('Y-'.$m.'-'.($i - 3));
if(isDayOff($date)){
$sheet->getStyle("{$cell}2:$cell$last_row")->applyFromArray(array(
'fill'=>['type'=>PHPExcel_Style_Fill::FILL_SOLID, 'color'=>['rgb'=>'CBCBCB']]
));
}
}
foreach($separators as $s){
$sheet->getStyle("A$s:$last_col$s")->applyFromArray(array(
'borders'=>['allborders'=>['style'=>PHPExcel_Style_Border::BORDER_NONE]]
));
}
foreach($item_names as $in){
$sheet->getStyle("A$in")->applyFromArray(array(
'font'=>['bold'=>true]
));
}
// $filename='Planning Bulanan.xlsx';
// header('Content-Type: application/vnd.ms-excel'); //mime type
// header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name
// header('Cache-Control: max-age=0'); //no cache
$objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'HTML'); //Excel2007
$objWriter->save('php://output');
}else{
$this->load->view($this->tpl, $data);
}
}
有人遇到过这个问题吗?我不知道这个问题,请有人拯救我的一天。
最佳答案
解决了这个问题,在 HTML 编写器单元格中应该以大写形式编写,例如 A1
,在从 $this->translate_cell($i); 返回的 mycode 中是小写形式;
.
关于PHPExcel 公式在 HTML 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34531223/
我对为什么我的 Excel 工作簿中的 if 公式不起作用感到目瞪口呆。 像 =if(F2=0, TRUE, FALSE) 这样简单的事情会引发一般错误“这个公式有问题”。不知道在哪里可以解决这个问题
在链接的电子表格中,我试图总结从一月到单元格 B1 中的日期的列 R 类别的所有实例(对于这个例子,让我们说“CAM 收入”)。 在这种情况下,总和应该是 ( B7:F7 ) 和 ( B9:F9 )
这是一个两部分的问题。我想根据价格的生效日期查找商品的价格。我看过垂直生效日期的例子,但我的有点不同。我在第一列 (A) 中有项目。其余列包含带有价格生效日期的标题。希望我能够附上格式示例。我以这种方
我想从第一个单元格开始自动增加月份。 A1 = 2019-01 以下单元格中的公式应自动填充其余单元格。 A2 = 2019-02 : : A13 = 2020-01 有没有一种简单的方法可以做到这一
在 Excel 中,如果 2021 年是基准年(第 1 年),并且我正在以月份为单位进行财务模型(但仍想知道该月份对应于哪一年),我可以使用什么公式来表示月份 0- 12 是第 1 年,第 13-24
我有以下公式,但它不起作用,因为当我在名称周围添加加利福尼亚时它只是失败了,所以它只是告诉我一切都是英国。我怎样才能解决这个问题? =IF(OR(N10776="*California*",N1077
我有这个公式: =IF(AD491="In progress" OR AD491="Reopened"(ROUND($BW$1-AI491,0),($BW$1-BB491+1)) 它正在检查单元格 A
我想做一个总结表。 我创建了一个名称下拉列表:Bob、Jack、Beth 和一个包含两个选项的下拉列表:已完成或更正待定。 在任务旁边的 Sheet2 上,您将选择名称,然后选择两个选项之一。 在摘要
如果我在 A 列中有以下数据: A1 = 3.5.15 A2 = 2.6 A3 = 8.4.3.16.7 我想要一个公式,它可以在下一列 B 中返回以下内容: B1 = 3.5 B2 = 2 B3 =
我在 Excel 2013 中有一张水果表。 我想通过从当前行到顶部搜索直到第一次出现“::”来填充“类别”列,这是表中类别的关键字。 如果有某种方法可以反转范围,我可以执行类似 "=Match(":
我这里有 2 张 table : 我要填写Code表 1 中的列,引用表 2。值的条件是开始日期必须在 ProductionDate 之间。和 ExpiryDate表 2 的类型,表 1 中的类型必须
我有以下工作表: 网格填充有以下公式(此示例来自单元格 H4),该公式根据左侧表格中的输入填充网格,=IF($A4="","",IF(AND($E4="Daily",H$2>=$D4,H$2=$D4,
我在 A1 中有以下值。当我向下拖动时,它应该以如下所示的方式增加。 B 应该首先增加,保持 C 不变。一旦 B 达到最大值,即 2,则 C 应该增加。 C 的最大值实际上取决于行号,行号除以 2 或
我会尽我所能理解这一点。我很讨厌把事情说清楚。 :) 所以……就这样…… 我有一张电子表格,上面列出了我种植辣椒的种子。这是我的专栏,我会在后面解释更多。 裁剪 |颜色 |一代 |物种 |来源 |斯科
我在 Excel 电子表格中有两个列表。 第一个列表有字符串,例如 1234 blue 6 abc xyz blue/white 1234 abc yellow 123 另一个列表包含第一个列表的子字
我正在尝试创建一个 SumIf 公式,该公式根据一个标准将多个列添加在一起。 =sumif(F$8:F$58,F73,L$8:L$58+I$8:I$58) 这给了我一个错误,并且不会将两列加在一起。
你好我想知道是否有一个公式相当于每个语句。 我知道使用 VBA 可以做到这一点,但鉴于这是一份官方报告,我更愿意让它无宏。 基本上我有一个列(假设是 A),其中包含支付发票的时间 ` |------
任何用于计算频率表中数据平均值(众数、标准差、...)的简单 Excel 公式,如下所示: value frequency 5 3 8 5 4 1
例如:您希望在 Z# 年的每年年初以今天的美元收到 $X。假设 3% 的恒定通货膨胀率和 7% 的复合年返回率。 我知道计算通货膨胀调整后 yield 的公式;对于返回率,您必须使用以下公式: [[(
需要一些帮助来找出一个公式来计算一个值在列中列出的次数。我将尝试解释下面的要求。 下图显示了数据集的示例。 要求是列出每个客户的问题和行动。 如您所见,即使从单元格中聚集的值中,我们也需要找出各个唯一
我是一名优秀的程序员,十分优秀!