针对SSRS2005导出到Excel文件不能命名sheet的处理办法
l 环境:
Ø 前端:Silverlight页面
Ø 后端:WCF Service、SSRS2005
Microsoft.Office.Interop.Excel.dll
(C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12)
根据需要配置dcom的Microsoft Excel Application的属性值,如用户权限等。
前端页面调用后端的服务,直接生成报表的excel文件,保存到前端机器上。
l 解决方法:
Ø 后端
- 利用ReportExecutionService类的方法调用report(rdl)。
LoadReport(),装载报表。
Render(),生成excel格式字节流。
- 使用FileStream生成并保存临时文件。
- 使用excel对象编辑文件
利用以下对象修改excel文件内容,如sheet的命名、删除单元格等:
Application、Workbook、Worksheet、Range
Workbook workbook = excelApp.Workbooks.Open(path);
(worksheet.Cells[1, index] as Range).EntireColumn.Delete(XlDirection.xlDown);
workbook.Save();
workbook.Close(Type.Missing, Type.Missing, Type.Missing);
excelApp.Quit();
System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI;
关闭(全部)进程:
foreach (var process in Process.GetProcessesByName("EXCEL"))
{
process.Kill();
}
英文版excel可能有问题, 需改CultureInfo,完后改回:
System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
…
System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI;
- 最后以文件字节返回给前端。
return File.ReadAllBytes(path);
Ø 后端
保存字节流为excel文件即可。