Skip to content

Commit aae7e39

Browse files
committed
feat: export excel
1 parent c69f24a commit aae7e39

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

backend/apps/chat/api/chat.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import asyncio
12
import datetime
23
import hashlib
34
import io
@@ -195,20 +196,21 @@ async def analysis_or_predict(session: SessionDep, current_user: CurrentUser, ch
195196

196197
@router.post("/excel/export")
197198
async def export_excel(excel_data: ExcelData):
198-
_fields_list = []
199-
data = []
200-
for _data in excel_data.data:
201-
_row = []
199+
def inner():
200+
_fields_list = []
201+
data = []
202+
for _data in excel_data.data:
203+
_row = []
204+
for field in excel_data.axis:
205+
_row.append(_data.get(field.value))
206+
data.append(_row)
202207
for field in excel_data.axis:
203-
_row.append(_data.get(field.value))
204-
data.append(_row)
205-
for field in excel_data.axis:
206-
_fields_list.append(field.name)
207-
df = pd.DataFrame(np.array(data), columns=_fields_list)
208-
209-
buffer = io.BytesIO()
210-
df.to_excel(buffer, index=False)
211-
buffer.seek(0)
212-
213-
return StreamingResponse(io.BytesIO(buffer.getvalue()),
214-
media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
208+
_fields_list.append(field.name)
209+
df = pd.DataFrame(np.array(data), columns=_fields_list)
210+
211+
buffer = io.BytesIO()
212+
df.to_excel(buffer, index=False)
213+
buffer.seek(0)
214+
return io.BytesIO(buffer.getvalue())
215+
result = await asyncio.to_thread(inner)
216+
return StreamingResponse(result, media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

0 commit comments

Comments
 (0)