C#合並多個結構一樣的Excel

合並代碼如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.Reflection;

using Excel = Microsoft.Office.Interop.Excel;

namespace ConsoleApplication20

{

//添加引用-COM-MicroSoft Excel 11.0 Object Libery

class Program

{

static void Main(string[] args)

{

//M爲表格寬度標志(Excel中的第M列爲最後一列),3爲表頭高度

MergeExcel.DoMerge(new string[]

{

@"E:\excel\類型A\公司A.xls",

@"E:\excel\類型A\公司B.xls"

},

@"E:\excel\類型A\合並測試.xls", "M", 3);

MergeExcel.DoMerge(new string[]

{

@"E:\excel\類型B\統計表A.xls",

@"E:\excel\類型B\統計表B.xls"

},

@"E:\excel\類型B\合並測試.xls", "I", 4);

}

}

public class MergeExcel

{

Excel.Application app = new Microsoft.Office.Interop.Excel.ApplicationClass();

//保存目標的對象

Excel.Workbook bookDest = null;

Excel.Worksheet sheetDest = null;

//讀取數據的對象

Excel.Workbook bookSource = null;

Excel.Worksheet sheetSource = null;

string[] _sourceFiles = null;

string _destFile = string.Empty;

string _columnEnd = string.Empty;

int _headerRowCount = 1;

int _currentRowCount = 0;

public MergeExcel(string[] sourceFiles,string destFile,string columnEnd,int headerRowCount)

{

bookDest = (Excel.WorkbookClass)app.Workbooks.Add(Missing.Value);

sheetDest = bookDest.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value) as Excel.Worksheet;

sheetDest.Name = "Data";

_sourceFiles = sourceFiles;

_destFile = destFile;

_columnEnd = columnEnd;

_headerRowCount = headerRowCount;

}

/// <summary>

/// 打開工作表

/// </summary>

/// <param name="fileName"></param>

void OpenBook(string fileName)

{

bookSource = app.Workbooks._Open(fileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value

, Missing.Value, Missing.Value, Missing.Value, Missing.Value

, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

sheetSource = bookSource.Worksheets[1] as Excel.Worksheet;

}

/// <summary>

/// 關閉工作表

/// </summary>

void CloseBook()

{

bookSource.Close(false, Missing.Value, Missing.Value);

}

/// <summary>

/// 複制表頭

/// </summary>

void CopyHeader()

{

Excel.Range range = sheetSource.get_Range("A1", _columnEnd + _headerRowCount.ToString());

range.Copy(sheetDest.get_Range("A1",Missing.Value));

_currentRowCount += _headerRowCount;

}

/// <summary>

/// 複制數據

/// </summary>

void CopyData()

{

int sheetRowCount = sheetSource.UsedRange.Rows.Count;

Excel.Range range = sheetSource.get_Range(string.Format("A{0}", _headerRowCount + 1), _columnEnd + sheetRowCount.ToString());

range.Copy(sheetDest.get_Range(string.Format("A{0}", _currentRowCount + 1), Missing.Value));

_currentRowCount += range.Rows.Count;

}

/// <summary>

/// 保存結果

/// </summary>

void Save()

{

bookDest.Saved = true;

bookDest.SaveCopyAs(_destFile);

}

/// <summary>

/// 退出進程

/// </summary>

void Quit()

{

app.Quit();

}

/// <summary>

/// 合並

/// </summary>

void DoMerge()

{

bool b = false;

foreach (string strFile in _sourceFiles)

{

OpenBook(strFile);

if (b == false)

{

CopyHeader();

b = true;

}

CopyData();

CloseBook();

}

Save();

Quit();

}

/// <summary>

/// 合並表格

/// </summary>

/// <param name="sourceFiles">源文件</param>

/// <param name="destFile">目標文件</param>

/// <param name="columnEnd">最後一列標志</param>

/// <param name="headerRowCount">表頭行數</param>

public static void DoMerge(string[] sourceFiles, string destFile, string columnEnd, int headerRowCount)

{

new MergeExcel(sourceFiles, destFile, columnEnd, headerRowCount).DoMerge();

}

}

}

對多個Excel表中的數據進行合並計算
對多個Excel表中的數據進行合並計算
  Excel 2007中若要彙總和報告多個單獨工作表的結果,可以將每個單獨工作表中的數據合並計算到一個主工作表中。這些工作表可以與主工作表在同一個工作簿中,也可以位于其他工作簿中。對數據進行合並計算就是組合數...查看完整版>>對多個Excel表中的數據進行合並計算
 
C#實現在Excel中將連續多列相同數據項合並
  效果圖如下:代碼如下:/**//// <summary> /// 合並工作表中指定行數和列數數據相同的單元格 /// </summary> /// <param name="sheetIndex">工作表索引</param> ...查看完整版>>C#實現在Excel中將連續多列相同數據項合並
 
更改多個Excel工作表的數據合並計算
更改多個Excel工作表的數據合並計算
  對來自多個Excel工作表中的數據進行合並計算後,可能需要更改對數據進行合並計算的方式。例如,可能要添加新的地區辦事處的工作表,或刪除不再存在的部門的工作表,或更改帶有三維引用 (三維引用:對跨越工作簿中...查看完整版>>更改多個Excel工作表的數據合並計算
 
一個簡單解決多個html文件合並成文本文件的方法.
爲了看文本文件的電子書,大家常常要把多個.html文件一個個拷成一個文件,非常不方便。怎樣才能象合並文本文件一樣來合並html文件呢?我有一個辦法。1。打開word.2.插入---文件---按序多選.html文件--插入。3...查看完整版>>一個簡單解決多個html文件合並成文本文件的方法.
 
方便浏覽:合並Windows中的多個TXT文檔
方便浏覽:合並Windows中的多個TXT文檔
  爲了方便日後浏覽,有時候我們需要將Windows系統中已儲存下來的多個文本文檔合並成一個文檔,利用複制粘貼功能來完成比較繁瑣,有沒有更簡便的方法呢?當然有了,其實利用WinRAR壓縮軟件便能輕松解決以上難題。 ...查看完整版>>方便浏覽:合並Windows中的多個TXT文檔
 
如何把多個Word文檔合並爲一個
     我有一本Word文檔的書,書的每一頁是一個Word文檔,一共有四百多個文檔,我現在想將它們合並到一個文檔中,不知如何實現(注:我使用Word2003)?  將這四百多個文檔存放到同一個文件夾中,然後打開第一頁...查看完整版>>如何把多個Word文檔合並爲一個
 
ASP.NETTips1---合並多個字段值
  一般支持數據綁定的web控件,例如DorpDownList控件、CheckBoxList控件等,都包含五個屬性:DataSource、DataMember,DataTextField、DataValueField和DataTextFormatString.DataSource用于獲取數據源,亦即獲取包...查看完整版>>ASP.NETTips1---合並多個字段值
 
ASP.NET Tips1---合並多個字段值
一般支持數據綁定的web控件,例如DorpDownList控件、CheckBoxList控件等,都包含五個屬性:DataSource、DataMember,DataTextField、DataValueField和DataTextFormatString。DataSource用于獲取數據源,亦即獲取包含...查看完整版>>ASP.NET Tips1---合並多個字段值
 
合並多個字幕到一部DVDRip壓縮電影中
合並多個字幕到一部DVDRip壓縮電影中
  DVDRip是一種常用的壓縮電影制作方式。DVDRip制作過程中合作字幕是朋友們經常遇到的問題,比如要把2CD的DVDRip字幕合並起來,配合一個文件來使用。DVDRip字幕常見的有idx+sub和srt兩種,本文將分類介紹方法。  ...查看完整版>>合並多個字幕到一部DVDRip壓縮電影中
 
 
回到王朝網路移動版首頁