You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2017 ETL项目无法识别.xlsx及仅支持.xls问题求助

解决Visual Studio 2017 SSIS导出.xlsx文件的两个问题

针对.xlsx工作表无法识别及仅支持.xls的解决方案

1. 修正Excel连接管理器配置

  • 打开Excel连接管理器的属性,检查ConnectionString是否使用支持.xlsx的驱动,正确格式如下:
    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\YourTargetFile.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;"
    
    其中Excel 12.0 Xml对应.xlsx格式,HDR=YES表示文件第一行为列标题。若连接管理器默认使用Excel 8.0(对应.xls),手动替换连接字符串即可。
  • 配置时确保目标.xlsx文件处于关闭状态,SSIS需要独占文件访问权,打开的文件会导致工作表识别失败。

2. 手动指定工作表名称

若自动识别工作表失败,可通过变量指定:

  • 在Excel目标编辑器中,选择Table or view name variable选项。
  • 创建字符串变量,值为工作表名称加$(如Sheet1$);若工作表名称含空格,格式为[Sales Data$]。
  • 绑定变量后,即可正常映射数据列。

3. 确认运行时位数与驱动适配

  • 打开项目属性→调试,将Run64BitRuntime设置为True,确保运行时匹配64位环境。
  • 若系统安装了32位Office,需通过被动安装命令部署64位的Microsoft Access Database Engine 2016 Redistributable,避免版本冲突:
    AccessDatabaseEngine_X64.exe /passive
    

4. 替代方案:CSV转xlsx

若上述方法仍无法解决,可先导出为CSV再转换:

  • 使用Flat File目标将数据导出为CSV文件,配置分隔符为逗号、文本限定符为双引号,确保列数据完整。
  • 添加脚本任务,使用EPPlus库将CSV转换为.xlsx,示例代码:
    using OfficeOpenXml;
    using System.IO;
    
    public void Main()
    {
        string csvFilePath = @"C:\ExportedData.csv";
        string xlsxFilePath = @"C:\FinalData.xlsx";
    
        var csvFile = new FileInfo(csvFilePath);
        var xlsxFile = new FileInfo(xlsxFilePath);
    
        using (var excelPackage = new ExcelPackage(xlsxFile))
        {
            var worksheet = excelPackage.Workbook.Worksheets.Add("ExtractedData");
            worksheet.Cells["A1"].LoadFromText(csvFile, new ExcelTextFormat
            {
                Delimiter = ',',
                TextQualifier = '"',
                HasHeader = true
            });
            excelPackage.Save();
        }
    
        Dts.TaskResult = (int)ScriptResults.Success;
    }
    
    需在脚本任务中添加EPPlus引用,可通过NuGet安装该库。

内容的提问来源于stack exchange,提问作者Tomás Luna Ulloa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:33:30