C#winform根据选择的Excel文件在数据库中创建数据表

C#winform根据选择的Excel文件在数据库中创建数据表

在这里插入图片描述
需求:根据选择的Excel文件在数据库中创建数据表;可以实现特殊字段(比如字段中含有数字、下划线、特殊字符等)以及表名创建

C#实现

using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
   
    public partial class 创建表 : Form
    {
   

        private void button122_Click(object sender, EventArgs e)
        {
   
            
            string tableName = tableNameTextBox.Text;
            string connectionString = "";

            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
   
                openFileDialog.Filter = "Excel Files|*.xlsx;*.xls";
                openFileDialog.Title = "Select an Excel file";
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
   
                    string filePath = openFileDialog.FileName;
                    tableName = tableNameTextBox.Text;
                    connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={
     filePath}; Extended Properties='Excel 12.0;HDR=YES;'";
                }
            }
            
			string sqlConnectionString = "server=127.0.0.1;uid=sa;pwd=xyz@0123456;database="+ datebasetext.Text;
            try
            {
   
                using (OleDbConnection excelConnection = new OleDbConnection(connectionString))
                {
   
                    excelConnection.Open();
                    DataTable schemaTable = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, null);

                    if (schemaTable.Rows.Count == 0)
                    {
   
                        MessageBox.Show("Excel文件列名为空!");
                        return;
                    }
                    DataView sortedView = schemaTable.DefaultView;
                    sortedView.Sort = "ORDINAL_POSITION ASC";
                    DataTable sortedSchemaTable = sortedView.ToTable();

                    // Create the SQL CREATE TABLE statement
                    string createTableQuery = $"CREATE TABLE [{
     tableName}] (";

                    List<string> existingColumnNames = new List<string>();

                    foreach (DataRow row in sortedSchemaTable.Rows)
                    {
   
                        string columnName = row["COLUMN_NAME"].ToString();
                        if (!existingColumnNames.Contains(columnName))
                        {
   
                            createTableQuery += $"[{
     columnName}] NVARCHAR(2048), ";
                            existingColumnNames.Add(columnName);
                        }
                    }
                    createTableQuery = createTableQuery.TrimEnd(',', ' ');
                    createTableQuery += ")";
                    using (SqlConnection sqlConnection = new SqlConnection(sqlConnectionString))
                    {
   
                        sqlConnection.Open();
                        using (SqlCommand sqlCommand = new SqlCommand(createTableQuery, sqlConnection))
                        {
   
                            sqlCommand.ExecuteNonQuery();
                        }
                    }
                    MessageBox.Show("创建表成功!");
                }
            }
            catch (Exception ex)
            {
   
                MessageBox.Show("报错信息: " + ex.Message);
            }
        }




    }
}

相关推荐

  1. 根据excel数据信息批量修改图片名称

    2023-12-12 01:24:05       37 阅读
  2. React前端解析excel文件,获取excel文件数据

    2023-12-12 01:24:05       36 阅读
  3. 将一个excel数据分发到多个excel文件

    2023-12-12 01:24:05       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 01:24:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 01:24:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 01:24:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 01:24:05       20 阅读

热门阅读

  1. Codeforces Round 900 (Div. 3)补题

    2023-12-12 01:24:05       49 阅读
  2. Socket.D 网络应用协议,v2.1.6 发布

    2023-12-12 01:24:05       41 阅读
  3. tmux常见会话管理命令

    2023-12-12 01:24:05       33 阅读
  4. useMemo和useCallback

    2023-12-12 01:24:05       40 阅读
  5. Vue 3实现的移动端两指控制图片缩放功能

    2023-12-12 01:24:05       42 阅读
  6. 简单实用的firewalld命令

    2023-12-12 01:24:05       26 阅读
  7. 鸿蒙(HarmonyOS)应用开发——web组件

    2023-12-12 01:24:05       36 阅读
  8. leetcode第119场双周赛 - 2023 - 12 - 9

    2023-12-12 01:24:05       46 阅读
  9. Redis研学-认识与安装

    2023-12-12 01:24:05       34 阅读
  10. 力扣373. 查找和最小的 K 对数字

    2023-12-12 01:24:05       32 阅读
  11. 通义千问测试

    2023-12-12 01:24:05       38 阅读
  12. 使用OkHttp上传本地图片及参数

    2023-12-12 01:24:05       36 阅读
  13. 空间信息智能应用团队研究成果与人才引进

    2023-12-12 01:24:05       33 阅读