根据我的项目要求,我需要在公司网站上开发一些页面,用户可以在该页面上载一个excel表格以将数据传输到MS SQL Server。我正在开始使用SSIS,但是我想知道如何使这部分成为网页。
您可以安排SSIS在sql作业中运行,每隔几分钟左右运行一次。对每个循环使用a,以便在没有文件的情况下实际上不执行任何操作。
您不能在Web应用程序中使用SSIS包。同样,在您的应用程序内部处理Excel文件可能很复杂,因此,解决此问题的一种常用方法是:
另一种方法是使用COM Interop或OpenXML处理您的Excel文件,这可能很复杂。
是,可以,但是您可能不想。
Excel和SSIS充其量是挑剔的伙伴。 SSIS相信可以在设计时确定并在运行时遵守的一组可靠的元数据。 Excel根据对前8行数据的采样来解释元数据。如果Excel文件是由机器生成的,则SSIS可以很好地协同工作,但是由于这将是用户上传文件,因此您将花费大量时间进行故障排除,为什么两个看似相同的电子表格无法解析相同的电子表格SSIS中的方式。
您如何使SSIS运行?您可以使用对象模型或使用dtexec.exe使其完成。这两种方法仅在您已为SQL Server授予服务器许可时才有效。如果在Web服务器上安装对象库或Integration Services服务,则需要为企业购买另一个SQL Server许可证。那很贵。
我,也许是最喜欢Stack Overflow上SSIS的人怎么办?我会使用OpenXml库,例如EPPlus。我在Reading Excel files without Excel]中写了一篇关于方法的博客
using OfficeOpenXml; // ... /// Get data from Excel worksheet, assuming columns A-G are desired public Dictionary<string, List<string>> GetExcelDriverData(string sourceFile) { Dictionary<string, List<string>> d = new Dictionary<string, List<string>>(); System.IO.FileInfo fi = new System.IO.FileInfo(sourceFile); using (ExcelPackage ep = new ExcelPackage(fi)) { ExcelWorkbook wb = ep.Workbook; ExcelWorksheet ws = wb.Worksheets.First(); if (ws != null) { // 1 based array to 7, inclusive for (int i = ws.Dimension.Start.Row+1; i < ws.Dimension.End.Row+1; i++) { List<string> row = new List<string>() { ws.Cells[i, 1].Value.ToString() , ws.Cells[i, 2].Value.ToString() , ws.Cells[i, 3].Value.ToString() , ws.Cells[i, 4].Value.ToString() , ws.Cells[i, 5].Value.ToString() , ws.Cells[i, 6].Value.ToString() , ws.Cells[i, 7].Value.ToString() }; d[ws.Cells[i, 7].Value.ToString()] = row; } } } return d; }
[请注意,如果您正在玩弄,这就是last LGPL version of EPPlus。 5+版需要许可,但比SQL Server许可便宜得多。