【发布时间】:2019-12-18 23:22:06
【问题描述】:
我正在使用 SSIS 数据流任务将数据从 SQL Server 导出到 Excel。尽管导出格式,这里所有列都显示为文本。因此,我需要开发一个 SSIS 脚本任务来进行必要的转换。我在开发脚本时遇到了麻烦。
格式化前的 Excel 工作簿
请看,Excel 单元格没有撇号,数字类型也是“常规”,但消息显示 此单元格中的数字格式为文本或前面有撇号
我尝试了互联网上的不同选项,但没有成功。
#region Namespaces
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
#endregion
namespace ST_de899f405b7b4083b0ad8cba6b3df2e3
{
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void Main()
{
string inputFile = (string)Dts.Variables["Target_FullFilePath"].Value;
Excel.Application ExcelApp = new Excel.Application();
Excel.Workbook ExcelWorkbook = ExcelApp.Workbooks.Open(inputFile);
Excel.Range formatRange;
ExcelApp.Visible = true;
foreach (Excel.Worksheet ExcelWorksheet in ExcelWorkbook.Sheets)
{
ExcelWorksheet.Select(Type.Missing);
ExcelWorksheet.Columns[2].NumberFormat = "";
ExcelWorksheet.Columns[3].NumberFormat = "";
ExcelWorksheet.Columns[4].NumberFormat = "0.00000";
ExcelWorksheet.Columns[5].NumberFormat = "yyyy-MM-dd";
}
ExcelWorkbook.Save();
GC.Collect();
GC.WaitForPendingFinalizers();
ExcelWorkbook.Close(Type.Missing, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(ExcelWorkbook);
ExcelApp.Quit();
Marshal.FinalReleaseComObject(ExcelApp);
}
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion
}
}
预期结果:编号为 B、C、D 到 看起来像十进制/整数的列,也经过类似过滤。 列 E 到 看起来像 Date 并且也进行了类似的过滤。
这是我希望 Excel 文件在通过 SSIS 格式化后的样子
我确认对应的列只有列标题之外的相关值。
【问题讨论】:
-
我将编辑您的问题并提及您正在导出到 Excel。 CSV(文本文件)是一种选择吗?您还应该描述您的实际问题 - 为什么它不成功?
-
尼克,csv/文本文件不是一个选项...虽然我可以导出 CSV/TXT 并将其转换为 Excel,如果这能解决我的需要...谢谢。跨度>
标签: c# excel visual-studio ssis number-formatting