php excel转数组,php将excel数据转换为3d数组(php convert excel data into 3d array)
php将excel数据转换为3d数组(php convert excel data into 3d array)
我有一个excel文件,其数据是一个3d数组。
我正在使用PHPExcel Object将数据返回到3d数组中。 但我只能返回一个二维数组。
$objPHPExcel = PHPExcel_IOFactory::load($file);
$cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();
foreach ($cell_collection as $cell) {
$column = $objPHPExcel->getActiveSheet()
->getCell($cell)
->getColumn();
$row = $objPHPExcel->getActiveSheet()
->getCell($cell)
->getRow();
$data_value = $objPHPExcel->getActiveSheet()
->getCell($cell)
->getValue();
if ($row == 1) {
$header[$row][$column] = $data_value;
} else {
$arr_data[$row][$column] = $data_value;
}
}
如何返回如下结果数组:
$res = array(
[2]=>array(
[A] => A,//column A
[B] =>array([1]=>'red',[2]=>'pink',[3]=>'purple')
),
[3]=>array(
[A] => B,//column B
[B] =>array([1]=>'white',[2]=>'blue',[3]=>'black')
),
);
任何人都知道如何修改我的代码以返回预期的结果? 任何答案将不胜感激!
I have an excel file whose data is a 3d array.
I am using PHPExcel Object to return the data into 3d array. But I can only return a 2d array.
$objPHPExcel = PHPExcel_IOFactory::load($file);
$cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();
foreach ($cell_collection as $cell) {
$column = $objPHPExcel->getActiveSheet()
->getCell($cell)
->getColumn();
$row = $objPHPExcel->getActiveSheet()
->getCell($cell)
->getRow();
$data_value = $objPHPExcel->getActiveSheet()
->getCell($cell)
->getValue();
if ($row == 1) {
$header[$row][$column] = $data_value;
} else {
$arr_data[$row][$column] = $data_value;
}
}
How can I return a result array like this:
$res = array(
[2]=>array(
[A] => A,//column A
[B] =>array([1]=>'red',[2]=>'pink',[3]=>'purple')
),
[3]=>array(
[A] => B,//column B
[B] =>array([1]=>'white',[2]=>'blue',[3]=>'black')
),
);
Anyone knows how I could modify my code to return the expected result? Any answer would be appreciated!
原文:https://stackoverflow.com/questions/46231887
更新时间:2020-01-07 09:46
最满意答案
我不是一个PHP程序员,这个代码没有遵守。 在这里,我添加了我的代码来生成您期望的数组。 它可以帮助您解决问题。 我认为$ column是一个像A,B这样的列值.....
$i = 1;
$i_str = "";
$res = array();
foreach ($cell_collection as $cell) {
$column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
$row = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();
$data_value = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();
if ($row == 1) {
$header[$row][$column] = $data_value;
} else {
if($column == 'A' && $data_value != ""){
$i++;
$i_str = (string) $i;
$res[$i_str]['A'] = $data_value;
$res[$i_str]['B'] = array();
}
else if($column == 'B'){
$len = (string) (count($res[$i_str]['B']) + 1);
$res[$i_str]['B'][$len] = $data_value;
}
}
}
print_r($res) // here you will get your expected array
I am not a php programmer and this code not complied. Here I have added my code to generate your expected array. It can help you to solve your problem. I think $column is a column value like A,B.....
$i = 1;
$i_str = "";
$res = array();
foreach ($cell_collection as $cell) {
$column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
$row = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();
$data_value = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();
if ($row == 1) {
$header[$row][$column] = $data_value;
} else {
if($column == 'A' && $data_value != ""){
$i++;
$i_str = (string) $i;
$res[$i_str]['A'] = $data_value;
$res[$i_str]['B'] = array();
}
else if($column == 'B'){
$len = (string) (count($res[$i_str]['B']) + 1);
$res[$i_str]['B'][$len] = $data_value;
}
}
}
print_r($res) // here you will get your expected array
2017-09-15
相关问答
由于所有Ct的长度都不相同,因此除了重建新块之外别无选择。 但是使用data[data['ct'] == ct]可能是O(n²)所以这是一个糟糕的方法。 这是使用Panel的解决方案。 cumcount重新编号每个Ct行: t=5
CFt=randint(0,t,(40*t,6)).astype(float) # 2D data
df= pd.DataFrame(CFt)
df2=df.set_index([df[0],df.groupby(0).cumcount()]).sort_index()
...
这不是关于如何创建和填充这些值的3D数组的完整讨论,而只是指出您所呈现的代码中的错误位置,这只是创建一行。 我怀疑你的错误出现在Global或Dim MonthArray语句中。 在VBA中,数组没有“命名”参数。 如果这是问题,您可以尝试以下方法: Global MonthArray(0 to 2) as Variant
然后,在你的代码中: MonthArray(0) = (ActiveSheet.Cells(i + 1, 9).value)
MonthArray(1) = (ActiveS
...
如果您使用的是Windows,则可以使用Brekel的工具 (查看此工作流程教程 ) 如果您可以编写一些代码,也可以尝试这种方法 。 If you're on Windows you can use Brekel's tools (have a look at this workflow tutorial) If you can write a bit of code, you can also try this approach.
我不是一个PHP程序员,这个代码没有遵守。 在这里,我添加了我的代码来生成您期望的数组。 它可以帮助您解决问题。 我认为$ column是一个像A,B这样的列值..... $i = 1;
$i_str = "";
$res = array();
foreach ($cell_collection as $cell) {
$column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
...
没有一种方法可以转换成一个mysql对象而无需写入tmp表并将其读回。以下将处理sql语句或数组转换,然后根据问题无需转换。 $all_rows = $notify->notification_sql(); // This either returns an SQL statement ready to run OR a set of rows in an array
if (!is_array($all_rows)) { // If it's not an array, run the SQL
...
pixelspace = reader.GetPixelSpacing()
spacing = image.GetSpacing()
vtk_data = image.GetPointData().GetScalars()
numpy_data = numpy_support.vtk_to_numpy(vtk_data)
numpy_data = numpy_data.reshape(dims[0], dims[1], dims[2])
numpy_d
...
尝试将三个列表作为元组传递: A = numpy.array((X, Y, Z), dtype=float)
在numpy.array文档中, numpy.array的签名是 numpy.array(object,dtype = None,copy = True,order = None,subok = False,ndmin = 0,maskna = None,ownmaskna = False) 即单个参数object是变成ndarray的东西,每个其他参数必须是一个关键字参数(因此你得到的
...
如果这是一个数字矩阵,那么它应该只需要42000*784 *10 == 329280000字节。 如果它是一个字符向量,它可能会更大,具体取决于基础值中唯一项的数量。 我确实尝试使用“[r]矩阵重新维度”上的搜索找到重复但没有成功,尽管我确实找到了一个关于用dim
...
这适用于您的示例,我希望它对您来说足够通用: gb
identical(ga, gb)
# [1] TRUE
I also found this way using the package abind: abind( split(gdf, gdf$X1), along=3)
In [54]: arr = np.array([[[ 1., 5., 4.],
[ 1., 5., 4.],
[ 1., 2., 4.]],
[[ 3., 6., 4.],
[ 6., 6., 4.],
[ 6., 6., 4
...
php excel转数组,php将excel数据转换为3d数组(php convert excel data into 3d array)相关推荐
- Java中如何将以byte数组给出的数据转换为double数组形式
1 致谢 感谢陈玮学长的代码 由于学习了他的代码 我才最终得出了正确的结论 2 问题描述 今天编程的时候遇到1个问题 需要从一个二进制文件中读取double[]的数据 我们使用的编程语言是Java语 ...
- Intel Realsense D435 python (Python Wrapper)example00: NumPy Integration 将深度帧数据转换为 Numpy 数组进行处理
NumPy Integration: Librealsense frames support the buffer protocol. A numpy array can be constructed ...
- 取原始数组中的指定数据push新数组
<!DOCTYPE html> <html><head><meta charset="utf-8"><title>取原始 ...
- python 创建空的numpy数组_真假美猴王-Numpy数据与Python数组的区别与联系
Numpy,是python中的一个矩阵计算包,功能类似matlab的矩阵计算.Numpy的诞生弥补了下面提到的两项的不足,numpy提供了两种基本的对象:ndarray(N-dimensional a ...
- java数组-如何在一堆数据中使用数组!
数组 1.类型一致的一组数据,其实相当于集合概念. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个数组元素(item),每个数组元素可以通过一个下标/索引来 ...
- js数组查找最接近_js查找数组所有符合条件数据 js替换数组中的某个元素
thinkphp一大堆数据的数组怎么做为条件去查询数据库? 在后台代码中将数组assign出去,然后在模板的js代码中就可以通过{$array}调用啦. 如果我们在Action中赋值了一个name模板 ...
- java字符串转换成字节数组_将Java字符串转换为字节数组
我有一个要加密的字节数组,然后转换为字符串,以便可以传输. 当我收到字符串时,我必须将字符串转换回字节数组,以便可以对其进行解密. 我检查了接收到的字符串是否与发送的字符串(包括长度)匹配,但是当我使 ...
- c#将字符串转换为数组,在C#中将字符串转换为字节数组
先决条件:如何在C#中声明和使用byte []? C#中的字符串到字节数组的转换 在C#中,可以使用Encoding将字符串转换为字节数组.方法,它接受字符串作为参数并返回字节数组.ASCII.Get ...
- js mysql json字符串转数组中_php数据库数据转换为js中的json对象
/ 1.在company数据user表中取出10条数据,保存为数组 2.在将数组转化为json格式,传递给js 3.用json解析器将传递过来的json字符串转化为json对象, 4.用documen ...
- java怎么把数据传入数组_怎么把数据放入数组中
1.如何将数据库中所有数据存入数组 放到数组我不知道为什么这么做,你数据库的类型都是一样吗?要是整型和字符串你可以放一个数组里? 你可以用结果集取出来放到list集合里 反正放到一个容器里就可以了,最 ...
最新文章
- git stash和git stash pop
- 多生产者多消费者问题
- php算出文件相对路径,php计算两个文件相对路径的方法
- 既可输入又可选择的组件
- 数组中子数组求最大和
- 一个奇葩的网络问题,把技术砖家搞蒙了
- wxpython textctrl_wxPython TextCtrl类
- 06-08 Jenkins 自动化测试持续集成
- 几种经典的hash算法
- net core 模型绑定与之前版本的不同-FromBody 必须对应Json格式
- js base64图片太大_手把手教你常用JS方法封装(一) [ 大杂烩 ]
- cad灯具图标_CAD图纸灯具图例
- 【leetcode刷题】[简单]427. 建立四叉树(construct quad tree)-java
- kasp技术原理_KASP——基因分型研究者指尖跳跃的珠链
- gigabyte计算机主板图解,gigabyte主板bios设置方法
- sketchfab中文网_发布Maya模型到Sketchfab插件Sketchfab 5.0.0 For Maya 2014-2017 Win/Mac
- html上绘制网格线,【玩转D3.js】--(1)绘制网格线
- IMDG产品功能扩展
- 只要不上网,pc机就不会感染计算机病毒,计算机考试试题训练
- Android自动化测试之MonkeyRunner MonkeyDevice MonkeyImage API使用详解 脚本编写 脚本录制回放