C#:如何导出到Excel电子表格? 使用XSLT / LINQ /其他方法?

我需要能够导出从SQL Server 2008中的存储过程接收的一些数据。一旦数据返回,我需要能够输出它或导出到一个新的Excel电子表格。

这样做的最简单的方法是什么,LINQ可以做到这一点? 还是我被迫使用XSLT? 我认为我必须首先将我返回的数据转换为XML,然后应用XSLT–因为XSLT对XML文档起作用。

XSLT 2在VS 2008中不可用,所以我们仍然必须使用XSLT 1 – 但这真的是要走的路或最好的select?

我认为这将是可能的使用替代方法,但也许我错了。

我真的很感激任何意见,教程等

谢谢

输出到csv或xml你真的不需要任何不在xpath 1.0的function…罕见的,我遇到了一个需要更复杂的情况。

你可以用linqselect一个xelement …但是在一个语句中这样做意味着你不能validation你的数据。 我通常最终迭代一组元素来处理边界情况。

HOwever作为CSV更容易,占用更less的空间比XML …我认为XML被滥用TBB。

另一种(*和我不推荐它)将是从Excel文档中查询SQL服务器。 那是你可以直接select你的数据到电子表格。 这是相当古老的,我不太喜欢它tbh。

这是一个代码,导出一个对象数组(你可以很容易地填写你的数据)到一个excel spreadsheat:

public static void SaveToExcel(object[,] data) { Excel = Microsoft.VisualBasic.Interaction.CreateObject("Excel.Application", String.Empty); Excel.ScreenUpdating = false; dynamic workbook = Excel.workbooks; workbook.Add(); dynamic worksheet = Excel.ActiveSheet; const int left = 1; const int top = 1; int height = data.GetLength(0); int width = data.GetLength(1); int bottom = top + height - 1; int right = left + width - 1; if (height == 0 || width == 0) return; dynamic rg = worksheet.Range[worksheet.Cells[top, left], worksheet.Cells[bottom, right]]; rg.Value = data; // Set borders for (var i = 1; i <= 4; i++) rg.Borders[i].LineStyle = 1; // Set header view dynamic rgHeader = worksheet.Range[worksheet.Cells[top, left], worksheet.Cells[top, right]]; rgHeader.Font.Bold = true; rgHeader.Interior.Color = 189 * (int)Math.Pow(16, 4) + 129 * (int)Math.Pow(16, 2) + 78; rg.EntireColumn.AutoFit(); // Show excel app Excel.ScreenUpdating = true; Excel.Visible = true; } 

它可能会直接从SQL Server推送到Excel。

 insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;', 'SELECT * FROM [SheetName$]') select * from SQLServerTable 

这个和更多的例子可以从这个来源获得 。

ADO.NET也有一个Excel的驱动程序。 所以如果你的数据自然是一个“形状”的数据库,那么我可能会使用它。

如果您想进行格式设置并利用Excel的电子表格function,则可以使用Excel互操作,但对于简单的数据传输而言,这可能太“杂乱”了。

另外,正如dtb指出的那样,如果它是一个简单的单表数据文件,则可以使用CSV文件。 虽然不是原生的Excel,但它可以随时导入,并且通常是将外部数据导入Excel的最简单方法。

如果您需要用于编写Excel文件的.NET包,请尝试

NExcelAPI

对于旧的Excel文件格式(<= 2003)或

ExcelPackage

对于较新的Office Open XML格式。 对于这两个库你不需要安装Excel。

编辑:这是另一个旧的(Excel 2002/2003)基于XML的文件格式

http://www.carlosag.net/Tools/ExcelXmlWriter/

如果你有几美元的花费,在过去的几年中我使用了xPort Tools ,并对此感到满意。