You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Visual Studio 2017控制台应用将Excel数据导入SQL 2014

Hey Carter, I feel your pain—sifting through outdated docs when you're just starting out is the worst. Let's break down a straightforward, working method for your setup (Visual Studio 2017 + SQL Server 2014 Express) to import Excel data into SQL via a console app.

简便的Excel到SQL Express导入方案(适配VS2017 + SQL2014)

前期准备

  • 确保你的SQL Server Express允许本地连接(用Windows身份验证最省心,不用额外配置SQL账号)
  • 在Visual Studio 2017中新建一个控制台应用(.NET Framework)(别选.NET Core,这个版本的VS对Framework的支持更稳定,和SQL2014搭配也更顺畅)

步骤1:安装必要的NuGet包

右键你的项目 → 选择「管理NuGet包」,安装两个关键包:

  • EPPlus(选版本4.5.3.3,这个版本免费且兼容VS2017,更高版本需要商业授权):用来轻松读取Excel文件内容
  • System.Data.SqlClient(选版本4.8.3):官方提供的SQL Server交互工具,适配你的SQL2014

步骤2:提前创建SQL目标表

先在SQL Server里建好和Excel结构对应的表。比如你的Excel有ID、Name、Age三列,SQL表可以这么建:

CREATE TABLE [dbo].[Person](
    [ID] INT NOT NULL,
    [Name] NVARCHAR(50) NOT NULL,
    [Age] INT NULL,
    CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ([ID] ASC)
)

步骤3:编写核心导入代码

替换Program.cs里的内容为以下代码(记得修改注释里的路径和数据库名):

using System;
using System.Data;
using System.Data.SqlClient;
using OfficeOpenXml;

namespace ExcelToSqlImporter
{
    class Program
    {
        static void Main(string[] args)
        {
            // 替换成你的Excel文件路径
            string excelFilePath = @"C:\YourExcelFile.xlsx";
            // 替换成你的数据库名,Windows身份验证无需账号密码
            string sqlConnectionString = @"Server=.\SQLEXPRESS;Database=YourDatabaseName;Trusted_Connection=True;";

            // 1. 把Excel数据读取到DataTable里
            DataTable excelData = new DataTable();
            using (var package = new ExcelPackage(new System.IO.FileInfo(excelFilePath)))
            {
                // 取Excel里的第一个工作表
                ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
                int totalRows = worksheet.Dimension.Rows;
                int totalCols = worksheet.Dimension.Columns;

                // 用Excel的表头作为DataTable的列名
                for (int col = 1; col <= totalCols; col++)
                {
                    excelData.Columns.Add(worksheet.Cells[1, col].Text);
                }

                // 从第二行开始读取数据(跳过表头)
                for (int row = 2; row <= totalRows; row++)
                {
                    DataRow newRow = excelData.NewRow();
                    for (int col = 1; col <= totalCols; col++)
                    {
                        // 如果是数字/日期类型,可以在这里加格式转换逻辑
                        newRow[col - 1] = worksheet.Cells[row, col].Text;
                    }
                    excelData.Rows.Add(newRow);
                }
            }

            // 2. 批量导入到SQL Server
            using (SqlConnection connection = new SqlConnection(sqlConnectionString))
            {
                connection.Open();
                // 使用SqlBulkCopy批量导入,比逐行插入快N倍
                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
                {
                    bulkCopy.DestinationTableName = "dbo.Person"; // 替换成你的目标表名

                    // 如果Excel列名和SQL列名完全一致,这一步可以省略,自动匹配
                    foreach (DataColumn col in excelData.Columns)
                    {
                        bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
                    }

                    try
                    {
                        bulkCopy.WriteToServer(excelData);
                        Console.WriteLine("数据导入成功啦!");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"导入失败:{ex.Message}");
                    }
                }
            }

            Console.ReadLine();
        }
    }
}

新手必看注意事项

  • Excel格式:确保用.xlsx格式,如果是旧的.xls文件,先转成.xlsx再导入
  • 列名匹配:Excel的表头要和SQL表的列名一致,不一致的话手动修改ColumnMappings里的对应关系
  • 权限问题:右键Visual Studio选择「以管理员身份运行」,避免文件读取或数据库连接权限不足
  • 数据类型转换:如果Excel里的数字/日期显示成文本,要在代码里加转换逻辑,比如年龄列:
    newRow[col - 1] = int.TryParse(worksheet.Cells[row, col].Text, out int age) ? age : DBNull.Value;
    

这个方法之所以适合新手,是因为它不需要复杂的配置,用的都是官方或成熟的工具,代码逻辑清晰,你可以跟着注释一步步修改,很容易上手。

内容的提问来源于stack exchange,提问作者Carter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:02:57