- 엑셀 업로드해서 첫번째 시트의 A열 데이터 추출
- 뿌려준 데이터로 엑셀 다운로드
import React, { useState } from 'react';
import * as XLSX from 'xlsx';
const ExcelHandler = () => {
const [fileData, setFileData] = useState([]);
const [outputData, setOutputData] = useState([
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 }
]);
const handleFileUpload = (e) => {
const file = e.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = (event) => {
const arrayBuffer = event.target.result;
const workbook = XLSX.read(arrayBuffer, { type: 'array' });
const sheet1 = workbook.Sheets[workbook.SheetNames[0]];
const data1 = XLSX.utils.sheet_to_json(sheet1, { header: 1 });
const sheet2 = workbook.Sheets[workbook.SheetNames[1]];
const data2 = XLSX.utils.sheet_to_json(sheet2, { header: 1 });
const columnAData1 = data1.map((row) => row[0]);
const columnAData2 = data2.map((row) => row[0]);
setFileData({ sheet1: columnAData1, sheet2: columnAData2 });
};
reader.readAsArrayBuffer(file);
}
};
const handleDownload = () => {
const ws1 = XLSX.utils.json_to_sheet(outputData);
const ws2 = XLSX.utils.json_to_sheet(outputData);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws1, 'Sheet 1');
XLSX.utils.book_append_sheet(wb, ws2, 'Sheet 2');
XLSX.writeFile(wb, 'output.xlsx');
};
return (
<div>
<h2>엑셀 파일 업로드</h2>
<input type="file" onChange={handleFileUpload} accept=".xlsx, .xls" />
<h3>업로드한 A열 데이터</h3>
<div>
<h4>첫 번째 시트 A열</h4>
<ul>
{fileData.sheet1 && fileData.sheet1.map((item, index) => (
<li key={index}>{item}</li>
))}
</ul>
<h4>두 번째 시트 A열</h4>
<ul>
{fileData.sheet2 && fileData.sheet2.map((item, index) => (
<li key={index}>{item}</li>
))}
</ul>
</div>
<h2>엑셀 파일 다운로드</h2>
<button onClick={handleDownload}>엑셀 파일 다운로드</button>
</div>
);
};
export default ExcelHandler;
엑셀 폼 다운로드 받는 기능
import React from "react";
import * as XLSX from "xlsx";
const ExcelDownload = () => {
const handleDownload = () => {
const data = [["테스트1", "테스트2", "테스트3"]];
const worksheet = XLSX.utils.aoa_to_sheet(data);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");
XLSX.writeFile(workbook, "test.xlsx");
};
return (
<button
onClick={handleDownload}
style={{
padding: "10px 20px",
backgroundColor: "#007bff",
color: "#fff",
border: "none",
borderRadius: "5px",
cursor: "pointer",
}}
>
엑셀 다운로드
</button>
);
};
export default ExcelDownload;