gpt4 book ai didi

sql-server - 要求使用 excel 报告中的列数识别报告

转载 作者:行者123 更新时间:2023-12-04 20:52:29 24 4
gpt4 key购买 nike

我有两个 excel 文件,我想将这些文件导入 SQL 临时表。

第一个excel文件:

 T1      T2      T3     T4  Total
1,472 1,364 1,422 – 4,258
-152.6 -152.6 -152.6 –
1,958 1,939 1,942 –
-122.6 -123.7 -122.2 –

第二个excel文件:
 T1       T2     T3     T4  T5       Total
1,472 1,364 1,422 – 12.2 4,258
-152.6 -152.6 -152.6 – 1000.12
1,958 1,939 1,942 – 50.23
-122.6 -123.7 -122.2 – 185.25

SSIS中是否有任何方法可以根据列数识别文件?我需要根据列号识别报告。

最佳答案

Microsoft.Office.Interop.Excel 命名空间中的对象可以在 C# 脚本任务中使用,如下所示。此示例将文件名和列数输出到 SSIS 对象变量 (User::SSISObjectVariable") 中,该变量可用于在包中应用进一步的逻辑和处理,例如存储在数据库表中或其他。完整文件路径是对象变量中的第一列,列数是第二列。还要确保在脚本中添加对 Microsoft.CSharp 命名空间的引用。对象变量需要包含在 ReadWriteVariables 中。脚本任务的字段,如果源文件夹存储在变量中(如下所示),则将此变量添加到 ReadOnlyVariables field 。

using Microsoft.Office.Interop.Excel;
using System.Data;
using System.IO;
using System.Collections.Generic;

List<string> excelFileList = new List<string>();
//get source directory
string filePath = Dts.Variables["User::FilePathVariable"].Value.ToString();
DirectoryInfo di = new DirectoryInfo(filePath);

System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("FilePath", typeof(System.String));
dt.Columns.Add("ColumnCount", typeof(System.Int32));

foreach (FileInfo fi in di.EnumerateFiles())
{
//optional- check file extension and prefix
if (fi.Extension == ".xls" && fi.Name.StartsWith("Prefix"))
{
//get full file path
excelFileList.Add(fi.FullName);
}
}

foreach (string excelFile in excelFileList)
{

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); ;
Microsoft.Office.Interop.Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(excelFile);
Microsoft.Office.Interop.Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1];

int columnCount;

//get number of columns
columnCount = xlWorksheet.Cells.Find("*", System.Reflection.Missing.Value,
System.Reflection.Missing.Value, System.Reflection.Missing.Value,
Microsoft.Office.Interop.Excel.XlSearchOrder.xlByColumns, Microsoft.Office.Interop.Excel.XlSearchDirection.xlPrevious,
false, System.Reflection.Missing.Value, System.Reflection.Missing.Value).Column;

//build data row to hold file path and column count
DataRow dr = dt.NewRow();
dr["FilePath"] = excelFile;
dr["ColumnCount"] = columnCount;

dt.Rows.Add(dr);

xlApp.Workbooks.Close();
xlApp.Quit();

xlWorkbook = null;
xlApp = null;
}

GC.Collect();
GC.WaitForPendingFinalizers();

//populate object variable
Dts.Variables["User::SSISObjectVariable"].Value = dt;

关于sql-server - 要求使用 excel 报告中的列数识别报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55114800/

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