65.9K
CodeProject 正在变化。 阅读更多。
Home

Excel 转换器到 Microsoft SQL SERVER

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.53/5 (11投票s)

2008 年 5 月 25 日

CPOL

2分钟阅读

viewsIcon

38565

downloadIcon

1122

此应用程序动态获取 Excel 数据库并将其转换为 SQL Server。

引言

本文旨在丰富对两个数据库的访问。 通过此应用程序,您可以轻松地将 Excel 数据库表转换为 Microsoft SQL Server 中的关联表。 该界面设计得像一个向导,可以轻松地引导您到达目的地。 那么,让我们开始吧!

背景

该应用程序不需要太多准备工作,所以直接开始吧!

Using the Code

在这里,我们有两个主要类

  1. ExcelManager.cs
  2. ServerExplorer.cs

首先,我们将看看 ExcelManager,稍后会跳转到 ServerExplorer。 各位,系好安全带!!

现在,这就是我们用于管理 Excel 端的内容。 让我们深入研究并剖析代码。 在下面的代码中,有一个方法可以在 Excel 中获取数据库文件名以及 sheetNamebeginCellendCell,这些都在 Excel 数据库中的关联表中。 该代码利用 OLeDb 数据提供程序来访问 Excel DBMS。 这就是 ExcelManager 类所做的全部工作。

public static DataTable GetExcelTable
    (string fileName,string sheetName,string beginCell,string endCell)
        {
            try
            {
                OleDbConnection dbConnection = new OleDbConnection();
                dbConnection.ConnectionString= "provider=Microsoft.Jet.OLEDB.4.0;
                            data source=" + fileName + ";Extended Properties=Excel 8.0;";

                StringBuilder stbQuery = new StringBuilder();
                stbQuery.Append("SELECT * FROM [" + sheetName + "$" + beginCell + ":" 
                                 + endCell + "]");
                OleDbDataAdapter adp = new OleDbDataAdapter
                                       (stbQuery.ToString(), dbConnection);
                DataTable dsXLS = new DataTable();
                adp.Fill(dsXLS);
                return dsXLS;
            }
            catch
            {
                return null;
            }
        }

现在让我们来看看 ServerExplorer 类。 实际上,这个类在我们的应用程序中执行主要操作。 请看下面

public static IList<string> GetActiveServers()

GetActiveServers() 方法利用 SqlDataSourceEnumerator 访问典型 LAN 网络中的 Microsoft SQL Server 名称。

public static IList<string> GetDatabases(string serverName, string userId, 
    string password,bool windowsAuthentication)

GetDatabases 实际上尝试连接到先前方法中选择的关联 ServerName。 您可以通过 Windows 身份验证或适当的 UserNamePassword 进行连接。

public static IList<string> GetTables 

public static IList<string> GetColumns(string serverName, string databaseName, 
    string userId,string password, bool windowsAuthentication, string tableName)

如其名称所示,上面定义的 GetTablesGetColumns 所做的只是获取 SQL Server 关联数据库中的表以及先前表的列。

此应用程序的摘要

在这里,我开发了三个 WinForm

  1. frmConfigExcel
  2. frmConfigSql
  3. frmConfigTransfer

frmConfigExcel 中,通过使用 ExcelManager 类,我检索了我们在 Excel 中需要的数据库以及关联的 SheetName 以及起始单元格和结束单元格。

frmConfigSql 中,我实际上建立了一个与 SQL Server 数据库的连接。 最终,在 frmConfigTransfer 中,我使用了一个 gridview,旨在查看从关联的 ExcelDatabase 检索的数据。 现在的作用是从 SQL Server 数据库中选择表,在最后一个场景中,我选择了 SQL Server 端的列以及 Excel 端的相关列,单击“添加”按钮进行转换。 这就是电影的结尾。 你点击“完成”按钮,现在可以喝咖啡了!

关于作者

我是 Hamid Moghaddam,.NET 程序员,MCP,并且拥有一家公司,Kahroba Inc, Iran, Yazd。

历史

  • 2008 年 5 月 25 日th:初始版本
Excel 转换为 Microsoft SQL SERVER - CodeProject - 代码之家
© . All rights reserved.