ETL脚本 - 'object'在Microsoft.Office.Interop中不包含'Value'的定义

时间:2015-04-17 11:27:50

标签: c# excel .net-3.5 .net-4.5 etl

我有一个.net 4.5项目从Excel文件中获取数据并将其中的一部分保存到文件中。它完美运行。

但是,我决定制作运行此脚本的ETL过程,然后将其上传到数据库。在ETL过程的脚本任务中,我只需将相同的代码粘贴到窗口,添加相同的引用等,然后得到一个错误:' object'不包含'值'的定义。

以下是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop;
using Excel = Microsoft.Office.Interop.Excel;

namespace etl.csproj
{
        public void Main()
        {
            process();
            Dts.TaskResult = (int)ScriptResults.Success;
        }

        static void process()
        {
            string mySheet = @"C:\\pathToMyExcelFile";
            System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\my file.txt");
            Excel.Application excelApp = new Excel.Application();
            Excel.Workbook xlWorkBook = excelApp.Workbooks.Open(mySheet, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            Excel.Sheets sheets = xlWorkBook.Worksheets;
            Excel.Worksheet worksheet;

            for (int i = 1; i < sheets.Count; ++i)
            {
                worksheet = (Excel.Worksheet)sheets.get_Item(i);
                for (int j = 5; j <= 9; ++j)
                {
                    for (int k = 68; k <= 72; k++)
                    {

                        if (worksheet.Cells[k, j].Value2 != null) //HERE IS THE ERROR
                        {
                            file.WriteLine(worksheet.Name + "|" + (string)(worksheet.Cells[k, 2] as Excel.Range).Value /*ERROR HERE*/ + "|" + (j - 4).ToString() + "|" + worksheet.Cells[k, j].Text/*ERROR HERE*/);
                        }
                    }


                }

            }
            file.Close();
        }

    }
}

这两个项目中唯一的变化是&#39;元数据是后者是在.NET 3.5中构建的,而不是4.5(我无法更改版本)。 我将不胜感激任何帮助!

0 个答案:

没有答案