C#把excel 的数据导入sqlserver excel_to_sqlserver
前端
<h1>Upload Excel File</h1>
<input type="file" id="fileInput" />
<button onclick="uploadFile()">Upload</button>
<script>
function uploadFile() {
var input = document.getElementById('fileInput');
var file = input.files[0];
if (file) {
var formData = new FormData();
formData.append("excelFile", file);
fetch('/Home/uploadExcel', {
method: 'POST',
body: formData
})
.then(response => {
if (response.ok) {
alert('Excel file uploaded successfully.');
} else {
alert('Failed to upload Excel file.');
}
})
.catch(error => {
console.error('Error:', error);
});
} else {
alert('Please select an Excel file to upload.');
}
}
</script>
后端
cs
// 连接字符串
string connectionString = "Data Source=.;Initial Catalog=pigdb;Integrated Security=True";
public void UploadExcel(IFormFile excelFile)
{
if (excelFile == null || excelFile.Length == 0)
{
BadRequest("Excel file is required.");
return;
}
// 上传文件到指定目录
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "pigdata.xlsx");
using (var fileStream = new FileStream(filePath, FileMode.Create))
{
excelFile.CopyTo(fileStream);
}
// 获取已上传的 Excel 文件的 FileInfo
FileInfo uploadedFileInfo = new FileInfo(filePath);
// 读取 Excel 文件
FileInfo file = new FileInfo(filePath);
using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
IWorkbook workbook = new XSSFWorkbook(fileStream);
ISheet sheet = workbook.GetSheetAt(0);
DataTable dt = new DataTable();
// 读取表头
IRow headerRow = sheet.GetRow(0);
foreach (ICell headerCell in headerRow)
{
dt.Columns.Add(headerCell.ToString());
}
// 读取数据行
for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
{
IRow row = sheet.GetRow(i);
DataRow dataRow = dt.NewRow();
for (int j = row.FirstCellNum; j < headerRow.LastCellNum; j++)
{
if (row.GetCell(j) != null)
{
dataRow[j] = row.GetCell(j).ToString();
}
}
dt.Rows.Add(dataRow);
} // 导入数据到 SQL Server
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "pigdata";
foreach (DataColumn col in dt.Columns)
{
bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
}
bulkCopy.WriteToServer(dt);
}
}
}
}