Test cases / sheet

deft sheet convert

Change format: --to csv|xlsx|json

5 runs on real files, 19 tests on generated files, not shown. 0 failed.

Real-file tasks

Real files and a plain-language job, from the agent benchmark. These are the reference answers, not an agent run.

Chinese table to ExcelPassed

把 销售.csv 转成 Excel 文件 销售.xlsx。

deft sheet convert 销售.csv -o 销售.xlsx

Input

销售.csv 39.8 KB
日期浏览量访客数人均浏览量平均停留时间跳失率成交客户数成交单量成交金额客单价成交商品件数下单客户数下单单量下单金额下单商品件数
2022/1/1452364689546.5697.010.49593101441031017107.48393921105012507118765444142
2022/1/28341101526135.47106.950.4615890190941790335112.673939518843225762123040.8140220
2022/1/3417625655556.3790.590.418930108911149018128.673941210170133391308573.945885
2022/1/411484663021713.8126.680.5218942209963211457169.543944819806211483357909.2443199
2022/1/5427821727825.8882.860.4111710131251190114101.633946913761165211398530.4350941
2022/1/64679151030654.5480.040.44346513540574158121.439485358953699476815343858
2022/1/75233681041725.0283.690.441579617502101405964.23956117626196151131589.242278
2022/1/8604035992256.0997.950.41120881265896871380.143960313710145091098719.440828
2022/1/9287369542785.2966.260.467845865364686882.4639644871110194718309.0645187
2022/1/10362603608295.9685.330.42896410555916861102.283967510370128301060643.644860
2022/1/11349943835624.1950.230.617279794571942598.843967682389650814243.9248064
2022/1/12310206600105.1770.270.438529943782211596.3939679949611117915319.4441086
2022/1/13305895506706.0479.270.417796844275694097.0939814878810256853226.9246746
2022/1/14309745841773.6858.360.571144512539104660191.453989212635145821155470.7541100
2022/1/15480358938655.1281.320.44122101438096429778.983990813493159601065677.1446015
2022/1/16441995695826.3584.010.4378478619827358105.4439937898110700946956.6443511
2022/1/177296831465594.9879.110.481348215932115767485.874000215955198211370055.8552073
2022/1/18311125653964.7658.20.5370667761750296106.184000579639348845511.3446013
2022/1/19406520868424.6858.190.684771014979963194.3340044950412032896512.3243885
2022/1/205352091000775.3585.130.431383715692102189373.854022916019194451183003.1540685
2022/1/214452811955512.2824.550.78106771238667287663.02402821153613986726998.7241418
2022/1/225083291230594.1353.570.694391170493885599.474045910755139371069799.8546868
2022/1/23408446602936.7785.570.47678844776342799.4340461886610549881546.3843054

Showing 24 of 401 rows.

Output

销售.xlsx 43.1 KB
Rendered by macOS Quick Look, first page

Rendered by macOS Quick Look, first page

Automatic checks (1)
  • xlsx: file = "销售.xlsx", rows = 401, header = ["日期", "浏览量", "访客数", "人均浏览量", "平均停留时间", "跳失率", "成交客户数", "成交单量", "成交金额", "客单价", "成交商品件数", "下单客户数", "下单单量", "下单金额", "下单商品件数"]

Large CSV to ExcelPassed

Convert gdp.csv to an Excel file called gdp.xlsx.

deft sheet convert gdp.csv -o gdp.xlsx

Input

gdp.csv 549.6 KB
Country NameCountry CodeYearValue
AfghanistanAFG20003521418059.923445
AfghanistanAFG20012813571753.8725324
AfghanistanAFG20023825701438.9996333
AfghanistanAFG20034520946818.545814
AfghanistanAFG20045224896718.67782
AfghanistanAFG20056203256538.709669
AfghanistanAFG20066971758282.293506
AfghanistanAFG20079747886187.393929
AfghanistanAFG200810109297047.543194
AfghanistanAFG200912416152732.056717
AfghanistanAFG201015856668555.833595
AfghanistanAFG201117805098206.314083
AfghanistanAFG201219907329777.587166
AfghanistanAFG201320146416757.598675
AfghanistanAFG201420497128555.69723
AfghanistanAFG201519134221644.732494
AfghanistanAFG201618116572395.077213
AfghanistanAFG201718753456497.815865
AfghanistanAFG201818053222687.412624
AfghanistanAFG201918799444490.11278
AfghanistanAFG202019955929052.149597
AfghanistanAFG202114266499429.874573
AfghanistanAFG202214502158192.090395

Showing 24 of 4985 rows.

Output

gdp.xlsx 371.2 KB
Rendered by macOS Quick Look, first page

Rendered by macOS Quick Look, first page

Automatic checks (1)
  • xlsx: file = "gdp.xlsx", rows = 13980, columns = 4, header = ["Country Name", "Country Code", "Year", "Value"]

Read LibreOffice and old Excel filesPassed

Convert the first sheet of issues.ods to ods.csv and the first sheet of issues.xls to xls.csv.

deft sheet convert issues.ods --to csv -o ods.csv
deft sheet convert issues.xls --to csv -o xls.csv

Input

issues.ods 4.0 KB
[content.xml] 1 1.5 ab FALSE test 10/20/2016 0 1 a 2 b 3 c 1 1 2 ab FALSE & < > aaa ' aaa " ☺ ֍ àâéêèçöïî«»
issues.xls 38.0 KB

No preview for this format. Open the file to read it.

Output

ods.csv 40 B
1
1.5
ab
false
test
2016-10-20T00:00:00
xls.csv 31 B
1
1.5
ab
false
test
2016-10-20
Automatic checks (2)
  • csv: file = "ods.csv", rows = 6
  • csv: file = "xls.csv", rows = 6

Export one sheetPassed

Export the sheet named issue2 from issues.xlsx to issue2.csv.

deft sheet convert issues.xlsx --sheet issue2 -o issue2.csv

Input

issues.xlsx 13.3 KB
Rendered by macOS Quick Look, first page

Rendered by macOS Quick Look, first page

Output

1a
2b
3c
Automatic checks (1)
  • csv: file = "issue2.csv", rows = 3, columns = 2

Parse a European CSVPassed

ventas.csv came from the Spanish statistics office. Convert it to ventas.json as an array of objects, one per row.

deft sheet convert ventas.csv -o ventas.json

Input

ventas.csv 63.3 KB
Grupo de Venta: Nivel 1;Grupo de Venta: Nivel 2;Índice y tasas;Periodo;Total
General de Grandes Superficies;;Índice;2003M12;173,566
General de Grandes Superficies;;Índice;2003M11;119,516
General de Grandes Superficies;;Índice;2003M10;123,792
General de Grandes Superficies;;Índice;2003M09;116,5
General de Grandes Superficies;;Índice;2003M08;124,11
General de Grandes Superficies;;Índice;2003M07;131,51
General de Grandes Superficies;;Índice;2003M06;113,42
General de Grandes Superficies;;Índice;2003M05;116,84
General de Grandes Superficies;;Índice;2003M04;110
General de Grandes Superficies;;Índice;2003M03;107,29
General de Grandes Superficies;;Índice;2003M02;98,82
General de Grandes Superficies;;Índice;2003M01;124,38
General de Grandes Superficies;;Índice;2002M12;156,24
General de Grandes Superficies;;Índice;2002M11;112,23
General de Grandes Superficies;;Índice;2002M10;111,34
General de Grandes Superficies;;Índice;2002M09;103,84
General de Grandes Superficies;;Índice;2002M08;114,04
General de Grandes Superficies;;Índice;2002M07;119,45
General de Grandes Superficies;;Índice;2002M06;102,78
General de Grandes Superficies;;Índice;2002M05;102,92
General de Grandes Superficies;;Índice;2002M04;98,57
General de Grandes Superficies;;Índice;2002M03;100,07
General de Grandes Superficies;;Índice;2002M02;88,23
General de Grandes Superficies;;Índice;2002M01;109,48
General de Grandes Superficies;;Índice;2001M12;146,19
General de Grandes Superficies;;Índice;2001M11;97,33
General de Grandes Superficies;;Índice;2001M10;97,58
General de Grandes Superficies;;Índice;2001M09;92,73
General de Grandes Superficies;;Índice;2001M08;99,16
General de Grandes Superficies;;Índice;2001M07;104,41
General de Grandes Superficies;;Índice;2001M06;96,08
General de Grandes Superficies;;Índice;2001M05;90,45
General de Grandes Superficies;;Índice;2001M04;86,62
General de Grandes Superficies;;Índice;2001M03;90,5
General de Grandes Superficies;;Índice;2001M02;79,4
General de Grandes Superficies;;Índice;2001M01;102,562
General de Grandes Superficies;;Índice;2000M12;136,442
General de Grandes Superficies;;Índice;2000M11;89,045
General de Grandes Superficies;;Índice;2000M10;88,37
General de Grandes Superficies;;Índice;2000M09;90,595
General de Grandes Superficies;;Índice;2000M08;92,144
General de Grandes Superficies;;Índice;2000M07;100,9
General de Grandes Superficies;;Índice;2000M06;86,2
General de Grandes Superficies;;Índice;2000M05;83,432
General de Grandes Superficies;;Índice;2000M04;82,403
General de Grandes Superficies;;Índice;2000M03;81,55
General de Grandes Superficies;;Índice;2000M02;75,63
General de Grandes Superficies;;Índice;2000M01;97,2
General de Grandes Superficies;;Índice;1999M12;128,562
General de Grandes Superficies;;Índice;1999M11;84,31
General de Grandes Superficies;;Índice;1999M10;86,88
General de Grandes Superficies;;Índice;1999M09;81,41
General de Grandes Superficies;;Índice;1999M08;81,57
General de Grandes Superficies
… 60554 more characters

Output

ventas.json 190.2 KB
[
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M12",
    "Total": 173.566
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M11",
    "Total": 119.516
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M10",
    "Total": 123.792
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M09",
    "Total": 116.5
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M08",
    "Total": 124.11
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M07",
    "Total": 131.51
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M06",
    "Total": 113.42
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M05",
    "Total": 116.84
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M04",
    "Total": 110
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M03",
    "Total": 107.29
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M02",
    "Total": 98.82
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2003M01",
    "Total": 124.38
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2002M12",
    "Total": 156.24
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2002M11",
    "Total": 112.23
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2002M10",
    "Total": 111.34
  },
  {
    "Grupo de Venta: Nivel 1": "General de Grandes Superficies",
    "Grupo de Venta: Nivel 2": null,
    "Índice y tasas": "Índice",
    "Periodo": "2002M09",
 
… 189508 more characters
Automatic checks (2)
  • json_rows: file = "ventas.json", rows = 972, keys = ["Grupo de Venta: Nivel 1", "Índice y tasas", "Periodo", "Total"]
  • python: code = "import json\nrows = json.load(open('ventas.json', encoding='utf-8'))\nfirst = rows[0]\nassert not any(k.startswith(chr(0xfeff)) for k in first), list(first)\nassert first['Periodo'] == '2003M12', first\nassert str(first['Total']).replace(',', '.') == '173.566', first\n"