簡體   English   中英

使用C#獲取Excel工作表名稱的列表

[英]Get list of Excel sheet worksheet name using C#

我正在嘗試在消息框中顯示Excel工作表名稱,但似乎無法正常工作,請有人幫我。

我累了添加以下內容,但它什么都沒有顯示。

string test = excelsheet.tostring(); 
messagebox.show(test); 

非常感謝您的回復。

提前致謝

/*
   Microsoft SQL Server Integration Services Script Task
   Write scripts using Microsoft Visual C# 2008.
   The ScriptMain is the entry point class of the script.
*/

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Data.Odbc;
using System.Data.OleDb;
using System.IO;

namespace ST_2c44bffc2aef4e1295daeafee32354d2.csproj
{
    [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {

        #region VSTA generated code
        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        };
        #endregion

        /*
        The execution engine calls this method when the task executes.
        To access the object model, use the Dts property. Connections, variables, events,
        and logging features are available as members of the Dts property as shown in the following examples.

        To reference a variable, call Dts.Variables["MyCaseSensitiveVariableName"].Value;
        To post a log entry, call Dts.Log("This is my log text", 999, null);
        To fire an event, call Dts.Events.FireInformation(99, "test", "hit the help message", "", 0, true);

        To use the connections collection use something like the following:
        ConnectionManager cm = Dts.Connections.Add("OLEDB");
        cm.ConnectionString = "Data Source=localhost;Initial Catalog=AdventureWorks;Provider=SQLNCLI10;Integrated Security=SSPI;Auto Translate=False;";

        Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.

        To open Help, press F1.
    */

        public void Main()
        {
            GetExcelSheetNames_2007(@"\\AUSSMBSSOBI\Files\Public\Reports\APOS_Dashboard.xlsm");
            Dts.TaskResult = (int)ScriptResults.Success;
        }

        public string[] GetExcelSheetNames_2007(string excelFile)
        {
            {

                OleDbConnection objConn = null;

                System.Data.DataTable dt = null;



                try
                {

                    FileInfo fileInfo = new FileInfo(excelFile);

                    String connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + "D:\\ETL\\Sample.xlsx" + ";Extended Properties=\"Excel 12.0 XML;HDR=YES\";";

                    objConn = new OleDbConnection(connString);

                    objConn.Open();

                    dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                    if (dt == null)
                    {

                        return null;

                    }

                    String[] excelSheets = new String[dt.Rows.Count];

                    int i = 0;



                    foreach (DataRow row in dt.Rows)
                    {

                        excelSheets[i] = row["TABLE_NAME"].ToString();

                        i++;

                    }



                    for (int j = 0; j < excelSheets.Length; j++)
                    {

                    }

                    return excelSheets;



                }

                catch (Exception ex)
                {

                    MessageBox.Show(ex.Message);

                    return null;

                }

                finally
                {

                    if (objConn != null)
                    {

                        objConn.Close();

                        objConn.Dispose();

                    }

                    if (dt != null)
                    {

                        dt.Dispose();

                    }
                    Dts.TaskResult = (int)ScriptResults.Success;

                }

            }

        }
    }
}

您的excelSheets變量是字符串數組,請嘗試以下操作:

foreach(String str in excelSheets)
{
    messagebox.show(str);
}

為什么使用OLE? 您可以使用VSTO並為您的excelsheet命名,例如以下示例:

var excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.Visible = true;
var excelWorkbook = excelApp.Workbooks.Add();
Worksheet excelSheet = excelWorkbook.Sheets.Add();
excelSheet.Name = "My sheetname";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM