2011-09-16 49 views
0

我遇到了一个奇怪的问题,我在SSRS 2008解决方案中开发了3个报表,并将它们导出到excel表格中,这些表格用颜色(绿色,红色,橙色)是故意的。当我尝试通过复制所有表单将它们合并到一个Excel表格中时,我发现颜色变化很奇怪,我不得不手动更改它们。我尝试使用C#代码模仿相同的合并,这也是不太成功的。当excel表格(从SSRS导出)颜色发生变化时

手动更改颜色真的很麻烦,因为我总共有64个报告。请建议我解决这个问题。

在此先感谢!

+0

这3个报告存在于3个独立的excel文件中是否正确? – KreepN

+0

是的。所有3个报告存在于3个独立的excel文件中,我需要将它们合并并制作一个统一的excel文件。 – Praveen

+0

给我几个,我正在为我们开发一个应用程序,我也用它来做这件事,并且从来没有真正想过让我的代码能够做到你想要的功能,并将它们放到单独的应用程序/代码库中。我会在这里更新你的。 – KreepN

回答

2

编辑4:

我做了这个控制台应用程序来模仿你在做什么。

namespace ExcelConsole 
{ 
using System.IO; 

using ExcelCombine; 

class Program 
{ 
    public static string Thepath { get; set; } 
    public static string TheFirstFile { get; set; } 
    public string[] files = null; 

    static void Main(string[] args) 
    { 
     Thepath = @"C:\Users\J\Desktop\TestingFolder\"; 
     string[] files = Directory.GetFiles(Thepath); 
     TheFirstFile = files[0]; 
     ExcelEngine.CombineWorkBooks(Thepath, "*.xls", Thepath, false, TheFirstFile); 
    } 
} 
} 

我使用了你应该已经拥有的类。在上面引用的文件夹“TestingFolder”中,我放置了模板和带有公式的副本。运行该应用程序后,它将它们组合得很好,并保持格式化/公式。

编辑5:

我想我可能已经结束了一些事情。

在上出类拔萃,我给你的代码,更改此:

sheetToCopy.Copy(defaultWorksheet) 

要这样:

sheetToCopy.Range["A1", "AC60"].Copy(); 
newBook.Activate(); 
newBook.Sheets.Add(Type.Missing,defaultWorksheet); 
newBook.ActiveSheet.Range["A1", "Z50"].Select(); 

newBook.ActiveSheet.PasteSpecial(XlPasteType.xlPasteAllUsingSourceTheme); 

这是什么为我做的是保持色彩和复制数据,但无论我使用哪个粘贴选项,列宽没有复制。

希望这有助于一点点。

+0

添加xlApp.CutCopyMode = XlCutCopyMode.xlCopy;创建行后:xlApp = new Application(); 。我经历了几个论坛,这可能会帮助我们。 – KreepN

相关问题