如何在aspose-cells-python 中写入一个二维数组
data = [
[“Name”, “Age”, “Gender”],
[“Alice”, 30, “Female”],
[“Bob”, 25, “Male”],
[“Charlie”, 35, “Male”]
]
我使用sheet.cells.import_array_list(data_, 0, 0, False)写入没有符合预期, 如图附件
image.png (4.3 KB)
我想知道sheet.cells.import_array_list的正确用法写入python的原生二维数组
, 逐个写入效率太低了
另外cells.get()和cells.get_cell()的区别是啥
@zengweiyu
Cells.get():如果这个单元个对象没有被创建, 创建并返回。
cells.get_cell() : 如果这个单元格对象没有被创建,那么返回空,用来做读入操作!这个方法已经被过期了,请使用 cells.Check_cell()
@zengweiyu
这几个方法都不能导入嵌套的List, 我们已经建了一个问题单:CELLSPYTHONNET-243.
目前请参考导入Numpy的方法,逐个导入。
顺便说一下,即使是我们内部导入, 我们也是逐个导入。
@zengweiyu
目前,您也可以参考以下代码实现您的需求。
import pandas as pd
import aspose.cells
from aspose.cells import Workbook
# 创建一个示例的 Pandas DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Gender': ['Female', 'Male', 'Female']}
df = pd.DataFrame(data)
# 创建一个新的工作簿
workbook = Workbook()
worksheet = workbook.worksheets[0]
# 将 DataFrame 数据直接写入到工作表
for row_idx, row in df.iterrows():
for col_idx, value in enumerate(row):
worksheet.cells.get(row_idx + 1, col_idx).value = value # 行号 + 1 以跳过标题行
# 设置标题行
for col_idx, column in enumerate(df.columns):
worksheet.cells.get(0, col_idx).value = column # 第一行设置列标题
# 保存文件
workbook.save("output.xlsx")
@zengweiyu
您好,我们在最新的25.1版本中修复了这个问题,现在您可以通过
worksheet.cells.import_array_list(data, 0, 0, True)
导入上述data数据,不再需要逐个导入。
谢谢!
那sheet.cells.import系列的其他方法能使用吗,我记得C# 下都是可以使用的
@zengweiyu
由于.NET 和Python数据类型的差异,这里您可以使用
worksheet.cells.import_array_list(data, 0, 0, True)
或者
worksheet.cells.import_object_array(data, 0, 0, True)
谢谢!
但是实际上python的包是基于C# dll进行封装的, 理论上可以将C# 中的基础数据结构对象封装进来, 不然会导致python版本功能缺失,能否帮我提个issue
@zengweiyu
我这里举两个例子:
1.ImportData(System.Data.DataTable table …) .NET中的DataTable数据结构在Python中根本不存在,对应这样的接口其实在Python中实现没有太多意义。
2. 对于.NET中的接口ImportArray(string[,] stringArray, int firstRow, int firstColumn)这个string[,] 数据结构在虽然在Python中是不存在的,但是我们尽量通过其他数据结构进行转换。
对于上面两类接口,我们目前都做了Skip处理,当然,我们内部已经记录了类似不支持的功能,这里我也建个单子 CELLSPYTHONNET-245( Importing multiple data types)感谢您的理解!
@zengweiyu
除了import_data(self, table : aspose.cells.ICellsDataTable,…)由于它的参数在.NET中是接口类型(或者抽象类,此种情况暂时不支持, CELLSPYTHONNET-113 已经做过记录)。
谢谢!