C# Excel数据合并
Posted 老刘讲编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# Excel数据合并相关的知识,希望对你有一定的参考价值。
今天讲一个用C#实现Excel数据合并
源码下载地址:https://download.csdn.net/download/ssssswsrjhtdj/18398536
预览效果:
核心代码:
“Excel数据合并”按钮点击代码
Stopwatch sw = new Stopwatch();
sw.Start();
//dataGridView1.DataSource = NPOIExcel.ExcelToDataTable("电脑统计表.xlsx", true);//方式1
DataTable[] tempTable = new DataTable[sheetCount];
folderBrowserDialog1.ShowDialog();
DirectoryInfo dir = new DirectoryInfo(folderBrowserDialog1.SelectedPath);
for (int i = 0; i < sheetCount; i++) //遍历一个excel的每个sheet
{
bool flag = true;
foreach (FileInfo dChild in dir.GetFiles("*.xlsx"))//遍历文件夹下的xlsx文件
{
tempTable[i] = NPOIExcel.ExcelToTable(dChild.FullName, i);//方式2
if (flag && lastTable[i] == null&& tempTable[i] != null) //第一次直接赋值,使得lastTable[i]获取表结构不为null
{
lastTable[i] = tempTable[i];
flag = false;
}
if (tempTable[i]!=null)
GetAllDataTable(tempTable[i] , i);//DataTable合并
}
}
NPOIExcel.TableToExcel(lastTable, folderBrowserDialog1.SelectedPath+"合并.xlsx", sheetCount);//方式2
dataGridView1.DataSource = lastTable[0];//调试时候显示用的,可以去掉
dataGridView2.DataSource = lastTable[1];//调试时候显示用的,可以去掉
dataGridView3.DataSource = lastTable[2];//调试时候显示用的,可以去掉
sw.Stop();
label1.Text = sw.ElapsedMilliseconds.ToString("数据导入耗时:" + "0000"+"ms");
MessageBox.Show("数据导入完成");
npoi.cs
using System;
using System.Collections.Generic;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
using System.IO;
namespace npoi1
{
public class NPOIExcel
{
/// <summary>
/// 将excel导入到datatable
/// </summary>
/// <param name="filePath">excel路径</param>
/// <param name="isColumnName">第一行是否是列名</param>
/// <returns>返回datatable</returns>
public static DataTable ExcelToDataTable(string filePath, bool isColumnName)
{
DataTable dataTable = null;
FileStream fs = null;
DataColumn column = null;
DataRow dataRow = null;
IWorkbook workbook = null;
ISheet sheet = null;
IRow row = null;
ICell cell = null;
int startRow = 0;
try
{
using (fs = File.OpenRead(filePath))
{
// 2007版本
if (filePath.IndexOf(".xlsx") > 0)
workbook = new XSSFWorkbook(fs);
// 2003版本
else if (filePath.IndexOf(".xls") > 0)
workbook = new HSSFWorkbook(fs);
if (workbook != null)
{
sheet = workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheet
//省略其他代码,太长了
return "=" + cell.CellFormula;
}
}
}
}
以上为核心代码,欢迎下载
以上是关于C# Excel数据合并的主要内容,如果未能解决你的问题,请参考以下文章