gpt4 book ai didi

c# - 动态获取第一个 Excel 工作表的名称并将其影响到变量

转载 作者:行者123 更新时间:2023-11-30 21:30:34 27 4
gpt4 key购买 nike

我使用 SSIS 加载工作表名称不同但结构相同的 xlsx 文件。我只需要加载每个文件的第一张纸,但每次的名称不能相同,所以我需要始终指向第一张纸,不管它的名字是什么。我认为在 Excel 源任务的数据访问模式下不可能使用索引(1st),这就是为什么我试图使用任务脚本来获取每个文件的第一张纸的名称并将其放入变量 Sheet_name 和在每个文件的数据访问模式下使用它。

我上面的代码有异常,我不知道如何解决。

我试图在不使用脚本的情况下寻找解决方案,但没有找到,这就是我尝试让我的代码正常工作的原因。

 public void Main()
{
String FolderPath =
Dts.Variables["User::Folder_To_Be_Processed_Path"].Value.ToString();
String File_Name = Dts.Variables["User::File_Name"].Value.ToString();
string fileFullPath = "";
fileFullPath = FolderPath + "\\" + File_Name;
string connString = "Provider=Microsoft.Jet.OLEDB.12.0;Data Source=" +
fileFullPath + ";Extended Properties=\"Excel 12.0;HDR=YES\";";

using (OleDbConnection conn = new OleDbConnection(connString))
{
conn.Open();
MessageBox.Show(connString);
dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {
null, null, null, "TABLE" });
Dts.Variables["User::Sheet_Name"].Value= dtSchema.Rows[0].Field<string>
("TABLE_NAME");
}
Dts.TaskResult = (int)ScriptResults.Success;
}

最佳答案

StackOverflow 和其他社区上有很多类似的帖子,主要思想是 OLEDB 不会按照在 Excel 工作簿中找到的相同顺序检索工作表名称,或者您需要对结果表进行排序。

使用 OLEDB 获取工作表名称

您应该按 ORDINAL_POSITION 列对 DataTable dtSchema 进行排序,因为 OLEDB 提供程序不会按该顺序返回它们。

使用 Interop 库获取工作表名称

从这里MSDN - post ,版主提到:

I am afraid that OLEDB does not preserve the sheet order as they were in Excel. Do you have to use OLEDB ? Another way to get the sheet names is using the office interop classes.

并提供了以下代码来获取工作表名称:

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelBook = xlApp.Workbooks.Open("D:\\Book1.xlsx");

String[] excelSheets = new String[excelBook.Worksheets.Count];
int i = 0;
foreach(Microsoft.Office.Interop.Excel.Worksheet wSheet in excelBook.Worksheets)
{
excelSheets[i] = wSheet.Name;
i++;
}

其他有用的链接

关于c# - 动态获取第一个 Excel 工作表的名称并将其影响到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54172467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com