Skip to content

Commit c0e2a74

Browse files
committed
feat: export chart data excel
1 parent 59d574d commit c0e2a74

File tree

3 files changed

+6
-7
lines changed

3 files changed

+6
-7
lines changed

backend/apps/chat/api/chat.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -206,12 +206,9 @@ async def export_excel(excel_data: ExcelData):
206206
_fields_list.append(field.name)
207207
df = pd.DataFrame(np.array(data), columns=_fields_list)
208208

209-
file_name = f"{excel_data.name}-{datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}_{hashlib.sha256(uuid.uuid4().bytes).hexdigest()[:10]}.xlsx"
210-
211-
file_path = f'{(settings.EXCEL_PATH if settings.EXCEL_PATH[-1] == "/" else (settings.EXCEL_PATH + "/"))}{file_name}'
212-
213209
buffer = io.BytesIO()
214210
df.to_excel(buffer, index=False)
215211
buffer.seek(0)
216212

217-
return StreamingResponse(io.BytesIO(buffer.getvalue()))
213+
return StreamingResponse(io.BytesIO(buffer.getvalue()),
214+
media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

frontend/src/api/chat.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,5 +329,5 @@ export const chatApi = {
329329
return request.fetchStream(`/chat/recommend_questions/${record_id}`, {}, controller)
330330
},
331331
checkLLMModel: () => request.get('/system/aimodel/default', { requestOptions: { silent: true } }),
332-
export2Excel: (data: any) => request.post('/chat/excel/export', data),
332+
export2Excel: (data: any) => request.post('/chat/excel/export', data, { responseType: 'blob' }),
333333
}

frontend/src/views/chat/chat-block/ChartBlock.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,9 @@ function exportToExcel() {
232232
chatApi
233233
.export2Excel({ ...chartRef.value?.getExcelData(), name: chartObject.value.title })
234234
.then((res) => {
235-
const blob = new Blob([res.data])
235+
const blob = new Blob([res], {
236+
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
237+
})
236238
const link = document.createElement('a')
237239
link.href = URL.createObjectURL(blob)
238240
link.download = `${chartObject.value.title ?? 'Excel'}.xlsx`

0 commit comments

Comments
 (0)