将多个EXCEL 合并一个EXCEL多个sheet

合并老版本xls

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using NPOI.HSSF.UserModel;

using System.IO;

using NPOI.XSSF.UserModel;

namespace Merge_Excel

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

bool Result;

string[] FileNames;

FileNames = GetFileNames();

if (FileNames == null) { return; }

var fullWork = new HSSFWorkbook();

// 遍历读取每一个订单文件

foreach (string FileName in FileNames)

{

string sheetName = Path.GetFileNameWithoutExtension(FileName);//获取sheet名称

var excelStream = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

var workbook = new HSSFWorkbook(excelStream);//读取excel文件

HSSFSheet sheet = workbook.GetSheetAt(0) as HSSFSheet; //获取第一个工作表(sheet)

sheet.CopyTo(fullWork, sheetName, true, true);//将报表合并至综合报表中

excelStream.Close();

}

using (FileStream filestream = new FileStream(Application.StartupPath + "合并" + System.DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls", FileMode.Create))

{

fullWork.Write(filestream);

filestream.Close();

}

fullWork.Dispose();

fullWork.Close();

fullWork = null;

GC.Collect();

MessageBox.Show("合并完成");

}

public string[] GetFileNames()

{

OpenFileDialog ofd = new OpenFileDialog();

ofd.Filter = "所有文件|*.*|office2007及高版本|*.xlsx|office2003及老版本|*.xls";

ofd.Multiselect = true;

if (ofd.ShowDialog() == DialogResult.OK)

{

if (ofd.FileNames != null)

{

return ofd.FileNames;

}

}

return null;

}

private void openFileDialog1_FileOk(object sender, CancelEventArgs e)

{

var fullWork = new HSSFWorkbook();//最终的合并excel

//string exportReports = hidExportReports.Value;//需要合并的Excel文件路径

string exportReports = "";

if (!string.IsNullOrEmpty(exportReports))

{

var reportArrary = exportReports.Split(',');

try

{

for (int i = 0; i < reportArrary.Length; i++)

{

string sheetName = Path.GetFileNameWithoutExtension(reportArrary[i]).Split('_')[1];//获取sheet名称

var excelStream = new FileStream(reportArrary[i], FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

var workbook = new HSSFWorkbook(excelStream);//读取excel文件

HSSFSheet sheet = workbook.GetSheetAt(0) as HSSFSheet; //获取第一个工作表(sheet)

sheet.CopyTo(fullWork, sheetName, true, true);//将报表合并至综合报表中

}

var stream = new MemoryStream();

fullWork.Write(stream);

byte[] bytes = stream.ToArray();

// Now that you have all the bytes representing the PDF report, buffer it and send it to the client.

//Response.Buffer = true;

//Response.Clear();

//Response.ContentType = "application/vnd.ms-excel";

//String filename = HttpUtility.UrlEncode("综合报表", Encoding.UTF8);

//Response.AddHeader("content-disposition", "attachment; filename=" + filename + ".xls");

//Response.BinaryWrite(bytes); // create the file

//Response.Flush(); // send it to the client to download

using (FileStream filestream = new FileStream(System.IO.Path.Combine(@"D:\", "liumang.xlsx"), FileMode.Create)) { fullWork.Write(filestream); filestream.Close(); }

MessageBox.Show("导出完成");

}

catch

{

}

finally

{

//删除excel文件

for (int i = 0; i < reportArrary.Length; i++)

{

File.Delete(reportArrary[i]);

}

}

}

}

}

}

合并新版本xlsx

private void button1_Click(object sender, EventArgs e)

{

bool Result;

string[] FileNames;

FileNames = GetFileNames();

if (FileNames == null) { return; }

var fullWork = new XSSFWorkbook();

// 遍历读取每一个订单文件

foreach (string FileName in FileNames)

{

string sheetName = Path.GetFileNameWithoutExtension(FileName);//获取sheet名称

var excelStream = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

var workbook = new XSSFWorkbook(excelStream);//读取excel文件

XSSFSheet sheet = workbook.GetSheetAt(0) as XSSFSheet; //获取第一个工作表(sheet)

sheet.CopyTo(fullWork, sheetName, true, true);//将报表合并至综合报表中

excelStream.Close();

}

using (FileStream filestream = new FileStream(Application.StartupPath + "合并" + System.DateTime.Now.ToString("yyyyMMddhhmmss") + ".xlsx", FileMode.Create))

{

fullWork.Write(filestream);

filestream.Close();

}

fullWork.Dispose();

fullWork.Close();

fullWork = null;

GC.Collect();

MessageBox.Show("合并完成");

}

相关推荐
夕泠爱吃糖24 分钟前
Linux 文件内容的查询与统计
android·linux·c#
小码编匠26 分钟前
WinForm 工业自动化上位机通用框架:注册登录及主界面切换实现
后端·c#·.net
码小跳27 分钟前
Halcon案例(三):C#联合Halcon识别排线
计算机视觉·c#·halcon
l1o3v1e4ding1 小时前
python-docx 库教程
开发语言·python·c#
m0_516484672 小时前
C#winform多选框代码
开发语言·c#
I'mSQL2 小时前
Visual Studio 2022打包程序流程
ide·c#·自动化·.net·visual studio
一线码农2 小时前
MinHook 对.NET底层的 SendMessage 拦截真实案例反思
c#·.net·windbg
MasterNeverDown2 小时前
.NET 异步编程的核心优势
c#·async·wait
m0_516484673 小时前
C#接口代码记录
c#