2011-09-16 81 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

相關問題