我有一个.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(我无法更改版本)。 我将不胜感激任何帮助!