uipath读取csv文件,设置数据格式

用uipath对数据进行处理,文件是csv文件,用ReadRange读取不了csv文件,怎么读取该csv文件存储为数据表,然后对数据表格式进行修改以后,写入新的xlsx文件。

img

使用Python编程,用pandas和openpyxl库实现对CSV文件格式的修改和将修改后的数据写入到新的Excel文件中的代码:

import pandas as pd
import openpyxl
import datetime

# 读取CSV文件并且存储为DataFrame对象
df = pd.read_csv("your_csv_file.csv", encoding="utf-8")

# 修改DataFrame中的数据格式
df["交易流水号"] = pd.to_numeric(df["交易流水号"])
df["支付时间"] = pd.to_datetime(df["支付时间"])
df["订单金额"] = df["订单金额"].apply(lambda x: round(float(x), 2))

# 创建时间戳字符串
time_str = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')

# 创建Excel文件并将DataFrame数据写入其中
with pd.ExcelWriter(f'your_output_file_{time_str}.xlsx', engine="openpyxl") as writer:
    sheet_name = f"sheet_{time_str}"
    df.to_excel(writer, index=False, sheet_name=sheet_name)
    writer.sheets[sheet_name].cell(1, 1).number_format = "0" # 数字格式
    writer.sheets[sheet_name].cell(1, 2).number_format = "yyyy-mm-dd" # 日期格式
    writer.sheets[sheet_name].cell(1, 3).number_format = "0.00" # 保留2位小数


在代码中,请将 "your_csv_file.csv" 替换为你的CSV文件名,并将 "your_output_file" 替换为你期望输出的Excel文件名。代码会将每个工作表(sheet)的名称都带有时间戳以防止重复。另外,pandas中的read_csv函数默认使用逗号作为分隔符,如果你的CSV文件使用其他分隔符,可以在read_csv函数中使用sep参数指定分隔符,例如:pd.read_csv("your_csv_file.csv", sep='|', encoding="utf-8")

提供参考实例:https://blog.51cto.com/shaoniana/5637867
【该实例讲解详细,方法值得借鉴】

解决思路如下
你单独加一个sheet清洗一下数据。然后用uipath另存csv为Excel文件。再读取

可以借鉴下

让我们进入 UiPath 中这个任务的实际实现:
Step1:将excel应用范围从活动面板拖放到设计器面板,
步骤 2:将读取范围活动从活动面板拖放到设计器面板,
现在我们在 DataTable 中拥有来自 csv 文件的全部数据。
DataTable 将是此读取范围活动的输出。
在本例中,我们将读取范围输出变量指定为 csvDT。
Step3:最后,将写入范围活动从活动面板拖放到设计器面板,并提供读取范围活动的输出作为输入:
有了这个,我们成功地将一个 csv 文件转换为 excel 文件。


可以尝试以下步骤:

使用 "CSV读取文本" 活动读取csv文件并将其存储为字符串。

使用 "生成数据表" 活动将 csv 字符串转换为数据表,并将其存储在一个变量中。

对数据表进行必要的修改,比如更改列名、删除或添加列、更改数据类型等。

将修改后的数据表使用 "Excel 应用程序范围" 活动打开一个新的 Excel 文件,并在其中创建一个工作表。

使用 "写入范围" 活动将修改后的数据表写入到新的 Excel 文件中。

最后使用 "保存工作簿" 活动将 Excel 文件保存到指定位置。

下面是一个简单的 UiPath 流程,演示了如何读取 csv 文件转换为数据表并将其写入到 Excel 文件中:

image.png

在 "CSV读取文本" 活动中指定 csv 文件路径和编码方式,将结果存储在 csvText 变量中。

在 "生成数据表" 活动中,将 csvText 变量作为输入,选择逗号作为分隔符,生成数据表并将其存储在 dataTable 变量中。

对数据表进行必要的修改。

在 "Excel 应用程序范围" 活动中,指定要创建的 Excel 文件路径,使用 "Workbook" 工作簿变量创建一个新的工作簿,并在其中创建一个名为 "Sheet1" 的工作表。

在 "写入范围" 活动中,将 dataTable 变量作为输入,选择单元格范围并指定要写入的工作表名称。

最后,在 "保存工作簿" 活动中指定要保存的 Excel 文件路径和文件类型。

可以借鉴下

1、基本的读取文件的方式

import csv
csv_reader=csv.reader(open('taxi.csv',encoding='utf-8'))
for row in csv_reader:
    print(row)
#taxi.csv最好放在同一目录下

首先,ReadRange是用来读取Excel文件中的数据,不能用于读取csv文件。对于csv文件,可以使用UiPath内置的活动“Read CSV”来读取csv文件并将其存储为DataTable。然后,使用“Output DataTable”活动可以将此DataTable输出为Excel文件。

  1. 使用“Read CSV”活动读取csv文件。设置FilePath属性为csv文件的完整路径,然后在输出面板中创建一个新的DataTable变量以存储数据。

  2. 运行后,此DataTable将包含csv文件中的所有数据。

  3. 接下来,通过“Add Data Column”和“Remove Data Column”活动更改DataTable的列和数据类型。

  4. 最后,使用“Excel Application Scope”活动将DataTable保存为.xlsx文件。

答案由GPT-4Plus大模型(语音)与博主@晓码自在合作编写(逐步分析-->完美代码-->完整注释在最下方):

根据您的描述,您需要:

  1. 读取CSV文件,存储为数据表
  2. 修改数据表格式,转为合适的格式
  3. 将修改后的数据表写入新的XLSX文件

解决思路如下:

  1. 读取CSV文件

可以使用python的pandas库,通过pandas.read_csv()读取CSV文件为数据表:

python
import pandas as pd

df = pd.read_csv('data.csv')

  1. 修改数据表格式

可以通过pandas的.astype()方法修改列的数据类型:

python 
df['交易流水号'] = df['交易流水号'].astype(int)   # 转为数字
df['支付时间'] = pd.to_datetime(df['支付时间']) # 转为日期格式
df['订单金额'] = df['订单金额'].astype(float).round(2) # 转为两位小数

  1. 保存为XLSX文件

可以通过pandas的.to_excel()方法将数据表保存为XLSX文件:

python
df.to_excel('output.xlsx')

完整的Python代码及注释实现您的要求:

python
import pandas as pd

# 读取CSV文件为数据表df
df = pd.read_csv('data.csv') 

# 获取列名列表,用于后续修改数据类型
columns = df.columns.tolist()

# 遍历列名,根据要求修改数据类型
for col in columns: 
    if col == '交易流水号':
        df[col] = df[col].astype(int) # 转为整型
    elif col == '支付时间':
        df[col] = pd.to_datetime(df[col]) # 转为日期类型
    elif col == '订单金额':
        df[col] = df[col].astype(float).round(2) # 转为两位小数浮点数

# 设置要导出的xlsx文件的名称格式      
file_name = '2023-05-22消费交易明细.xlsx'

# 将df数据表导出为xlsx文件 
df.to_excel(file_name)  

print(f'数据导出完成,文件为{file_name}')

注释说明:

  1. 读取CSV文件为数据表df

  2. 获取df的所有列名,存储在列表columns中

  3. 遍历columns,根据要求修改对应列的数据类型

    • '交易流水号'转为整型
    • '支付时间'转为日期类型
    • '订单金额'转为两位小数浮点数
  4. 设置要导出的XLSX文件名称格式

  5. 调用.to_excel()方法,将df导出为XLSX文件

  6. 打印提示信息

这段代码实现了:

  1. 读取CSV文件为数据表
  2. 修改数据表中'交易流水号'、'支付时间'、'订单金额'三列的数据类型
  3. 将修改后的数据表df导出为XLSX文件

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
从CSV文件中读取数据可以使用Read CSV activity。在读取CSV文件之前,需要使用“Build Datatable” activity创建一个数据表,以便在后续的处理中使用。

以下是实现该功能的步骤和代码:

1.使用“Build Datatable” activity创建数据表,并设置列名称和数据类型:

image1

2.使用“Read CSV” activity读取CSV文件并将其存储到数据表中。将“Read CSV” activity的“Output”属性设置为数据表变量,如下所示:

image2

3.完成数据表的更改,例如添加新的列,删除不需要的列等。

4.使用“Write Range” activity将更改后的数据表写入新的XLSX文件中。将“Write Range” activity的“DataTable”属性设置为更改后的数据表变量,将“Range”属性设置为“”(表示将整个数据表写入文件),将“WorkbookPath”属性设置为新文件的路径,如下所示:

image3

以下是完整的工作流程(使用上面的数据表结构):

image4

以下是实现此过程的代码:

<Sequence DisplayName="Main">
    <BuildDataTable Name="BuildDataTable" DisplayName="Build DataTable" DataTable="[dtData]" Columns="[&quot;Order ID&quot;:GetType(System.Int32), &quot;Product Name&quot;:GetType(System.String), &quot;Quantity&quot;:GetType(System.Int32), &quot;Price&quot;:GetType(System.Double), &quot;Total Price&quot;:GetType(System.Double)]" IncludeSchema="False" />
    <ReadCsvFile Name="Read CSV" DisplayName="Read CSV" CsvDT="[dtData]" FilePath="C:\Test\data.csv" Separator="," PreserveFormat="False" />
    <AddDataColumn DisplayName="Add Data Column" ColumnName="Discount" Type="Decimal" DataTable="[dtData]" />
    <RemoveDataColumn DisplayName="Remove Data Column" DataColumn="Total Price" DataTable="[dtData]" />
    <WriteRange Name="Write Range" DisplayName="Write Range" WorkbookPath="C:\Test\output.xlsx" WorksheetName="Sheet1" DataTable="[dtData]" />
</Sequence>

希望能帮助到您!
如果我的回答解决了您的问题,请采纳!