我试图在这里和PHPExcel官方文档/论坛中检查每个可能的类似解决方案,但我没有找到任何解决我的问题的方法.
问题
我正在尝试克隆(或复制,诚实)一张表,通过保留克隆表的样式将其解析为通过phpexcel创建的另一个文件.
设置是:
sheet.xls <---要打开和复制的文件
PHPExcel对象< - 在for循环中创建X次的文件,我需要根据一组数组附加Y表.
什么有效
由于与phpexcel文件相关的一些奇怪的通知,克隆和附加工作非常好,需要时间:
注意:未定义的偏移量:在第729行的\ serverpath\PHPExcel\Classes\PHPExcel.php中为1
注意:未定义的偏移量:在729行的\ serverpath\PHPExcel\Classes\PHPExcel.php中为2
注意:未定义的偏移量:第729行的\ serverpath\PHPExcel\Classes\PHPExcel.php中的3
注意:未定义的偏移量:第729行的\ serverpath\PHPExcel\Classes\PHPExcel.php中的4
编辑::
第729行指的是:
foreach ($sheet->getCellCollection(false) as $cellID) {
$cell = $sheet->getCell($cellID);
++$countReferencesCellXf[$cell->getXfIndex()]; // line 729
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这是关于款式的.< - 有上千种,不知道它们来自哪里,文件正确生成,它们只是失去了如上所述的格式.
什么行不通
生成的文件丢失原始格式但保留公式,因此原始"模板"(sheet.xls)的每个边框(和任何样式)都将丢失.
代码的相关部分
我只在这里发布真正相关的代码,主要是因为它大约有一千行代码.
稍后将保存创建的文件(发生在父foreach中):
$file = new PHPExcel();
Run Code Online (Sandbox Code Playgroud)
克隆(在上面的创建后发生在子foreach内):
$sd = $objReader->load("sheet.xls");
$sc = $sd ->getActiveSheet()->copy();
$clonedSheet = clone $sc;
Run Code Online (Sandbox Code Playgroud)
追加(在上面克隆的子项中发生N次):
$ficheName = "not relevant tbh and less than 31 characters";
$temporarySheet = clone $clonedSheet;
$temporarySheet->setTitle($ficheName);
$file->addSheet($temporarySheet,0);
$file->setActiveSheetIndex($file->getIndex($temporarySheet)); …Run Code Online (Sandbox Code Playgroud) 我已经在 stackoverflow 中检查了很多很多帖子,但是,即使许多解决方案应该有效,它仍然对我不起作用。
我在引导程序中有一个模态,其中有一个引导程序复选框列表(<label><input>样式)。
每个复选框都有一组直接从 AJAX 请求设置的数据属性,因此,它们不是通过 jQuery 设置的。
在我的情况下,我需要在切换复选框时从复选框中删除所有数据属性并添加其他一些。
然而,问题是我无法删除它们。
我第一次尝试使用jQuery.removeData(),但后来我读到它实际上只删除数据属性,如果其中至少一个已经通过 jQuery 设置,因此这不是我的情况。
所以,我检查了一下,发现我应该使用jQuery.removeAttr()原型并删除每个数据元素。
所以,我的情况是这样的:
$('.modal_day_checkbox').on('change', function(){
if ($(this).is(':checked')) {
removeAllData($(this));
$(this).data('newid', 'test_id');
console.log($(this).data());
}
else {
removeAllData($(this));
$(this).data('testID', 'ID_NEW');
console.log($(this).data());
}
});
Run Code Online (Sandbox Code Playgroud)
而且,为了有一个干净的代码,我实现了函数 removeAllData:
function removeAllData(object) {
$.each(object.data(), function(i, v) {
object.removeAttr("data-"+i);
console.log('removing: '+'data-'+i);
});
}
Run Code Online (Sandbox Code Playgroud)
这只是遍历对象以检查它具有哪些数据属性,并且应该将其删除。
令人惊讶的是,结果是这样的:

任何的想法?
在阅读之前:发布的代码没有任何问题,这个问题纯粹与智能感知“问题”有关,或者实际上是一个技术问题。
我正在尝试做什么
基本上,我有一个需要分组的元素数组。为了实现这一目标,我采用了 stackoverflow 中找到的现有 GroupBy 过滤器,将其更改为支持异步源,然后将其放置在我自己的项目中。到目前为止,一切都很好。
然而,因为这样的管道具有一个Array<any>转换值,所以我想知道是否可以使用某种方法<T>来避免在我看来丢失智能感知。
管道源是:
@Pipe({name: 'groupBy'})
class GroupByPipe implements PipeTransform {
transform(value: Array<any>, field: string): Array<any> {
// Async support
// This will prevent pipes stack to throw a null pointer exception.
if (value != null) {
const groupedObj = value.reduce((prev, cur)=> {
if(!prev[cur[field]]) {
prev[cur[field]] = [cur];
} else {
prev[cur[field]].push(cur);
}
return prev;
}, {});
return Object.keys(groupedObj).map(key => ({ key, value: groupedObj[key] }));
}
else {
return value;
} …Run Code Online (Sandbox Code Playgroud)