C#实现多Excel多Sheet合并

using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;

int modelSheetHeadRows = 1;
                    Excel.Application excel = null;
                    try
                    {
                        excel = new Excel.Application();
                        string newModel = tbModel.Text.Replace(".", "合并.");
                        excel.Visible = true;
                        File.Copy(tbModel.Text, newModel, true);
                        Excel.Workbook modelWorkBook = excel.Workbooks.Open(newModel, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing
                            , Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

                        for (int i = 0; i < listViewSel.Items.Count; i++)
                        {
                            string pathName = listViewSel.Items[i].SubItems[2].Text + "\\" + listViewSel.Items[i].SubItems[1].Text;

                            Excel.Workbook tmpWorkBook = excel.Workbooks.Open(pathName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                , Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

                            for (int j = 1; j <= tmpWorkBook.Sheets.Count; j++)
                            {
                                Excel.Worksheet tmpSheet = (Excel.Worksheet)tmpWorkBook.Sheets[j];
                                if (modelWorkBook.Sheets.Count < j)
                                {
                                    modelWorkBook.Sheets.Add(Missing.Value);
                                }
                                Excel.Worksheet modelSheet = (Excel.Worksheet)modelWorkBook.Sheets[j];
                                if (i == 0)
                                {
                                    modelSheetHeadRows = modelSheet.UsedRange.Cells.Rows.Count;
                                }
                                int tmpSheetRows = tmpSheet.UsedRange.Cells.Rows.Count;
                                int tmpSheetColumns = tmpSheet.UsedRange.Cells.Columns.Count;
                                int modelSheetRows = modelSheet.UsedRange.Cells.Rows.Count;

                                tmpSheet.get_Range((Excel.Range)tmpSheet.Cells[modelSheetHeadRows + 1, 1], (Excel.Range)tmpSheet.Cells[tmpSheetRows, tmpSheetColumns]).Copy(
                                    modelSheet.get_Range((Excel.Range)modelSheet.Cells[modelSheetRows + 1, 1], (Excel.Range)modelSheet.Cells[tmpSheetRows + modelSheetRows - 1, tmpSheetColumns]));
                            }
                            tmpWorkBook.Close();
                            modelWorkBook.Save();
                        }
                        modelWorkBook.Close();
                    }
                    catch (Exception ee)
                    {
                        MessageBox.Show("[错误]:" + ee.Message, "信息提示");
                    }
                    finally
                    {
                        pathtb.Text = null;
                        tbModel.Text = null;
                        listView.Items.Clear();
                        listViewSel.Items.Clear();
                        excel.Quit();
                        MessageBox.Show("合并完成");
                    }

C#实现多Excel多Sheet合并

时间: 2024-08-29 05:02:36

C#实现多Excel多Sheet合并的相关文章

【转载】jxl操作excel 字体 背景色 合并单元格 列宽等 .

package com.email.jav; import java.io.File;import java.io.IOException;import java.net.URL; import jxl.Workbook;import jxl.format.UnderlineStyle;import jxl.write.Label;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.

C# 获取Excel中的合并单元格

C# 获取Excel中的合并单元格 我们在制作表格时,有时经常需要合并及取消合并一些单元格.在取消合并单元格时需要逐个查找及取消,比较麻烦.这里分享一个简单的方法来识别Excel中的合并单元格,识别这些合并单元格之后对这些单元格进行取消合并操作,还可以进行其他操作如设置格式等. 为了展示,这里我使用了一个模板Excel文件,它含有两个合并区域,如下图: 代码使用: 步骤1:实例化一个Workbook对象并加载Excel文档. Workbook workbook = new Workbook();

C# 使用Epplus导出Excel [4]:合并指定行

导出的Excel数据,合并指令行并水平垂直居中 原始数据 合并后的数据 代码如下 /// <summary> /// 合并行 /// </summary> /// <param name="sheet"></param> /// <param name="startRowIndex"></param> /// <param name="mergeRowIndexs"&g

java的poi技术写Excel的Sheet

在这之前写过关于java读,写Excel的blog如下: Excel转Html java的poi技术读,写Excel[2003-2007,2010] java的poi技术读取Excel[2003-2007,2010] java的poi技术读取Excel数据到MySQL java的jxl技术导入Excel java的poi技术读取和导入Excel 然而,这篇blog主要内容是关于Excel里面怎样去写Sheet数据. 那么在Excel里面什么叫做Sheet呢?如下图红色框里面的内容就是Excel的

Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印

1. 读取 //读取excel指定sheet中的各行数据,存入二维数组,包括首行 public static String[][] getSheetData(XSSFSheet sheet) throws IOException { String[][] testArray = new String[sheet.getPhysicalNumberOfRows()][]; for(int rowId =0;rowId<sheet.getPhysicalNumberOfRows();rowId++)

用wpf实现了多个excel文件的合并

最近公司做了一个微信红包的项目,其中一个主要的工作内容是 将238万张券导入到微信平台里面,用于微信卡券的领取和核销.但是提供给我的券都是以一个个的excel文件给到的.然后通过excel文件的导入功能,将所有的券导入到某张表里.由于有238万张券,所以一共给到的excel文件大概有100多份.如果是一个个的导入的话,实在太麻烦了.所以,想做一个运用,将多个excel文件的合并成一个文件. 网上百度了一下,也的确有这样的运用软件.但是有些要么不是免费,要么有些免费但功能受限的.所以决定还是自己手

vba实现excel多表合并

Excel多表合并之vba实现 需求 保留列名,复制每一个excel里的数据,合并到一个excel 操作步骤 将要合并的文件放在同一文件夹下,复制过来就好(ps:最好不要直接操作原数据文件,避免操作失败,数据丢失) 在这个目录下创建一个“合并.xlsx” 双击打开“合并.xlsx” 同时按 ALT + F11 出现下图,按图中文字操作即可完成合并 完成 附录代码 Sub 合并当前目录下所有工作簿的全部工作表() Dim MyPath, MyName, AWbName Dim Wb As Work

POI删除Excel的sheet页

POI删除Excel的sheet页 poi有删除一个sheet页的方法,我希望除了一个sheet页之外其他的都删除,但是使用的时候发现,删除之后经常会出现文件破坏的提示,研究发现,是由于excel有一个默认的当前页功能. 比如表格中有3个sheet页,保存的时候默认显示的是第三页,那么删除两页之后,表格只剩一页,打开的时候表格会显示第三页失败,就会提示文件损坏.. 遇到这种情况,有两种方法: 将表格默认显示的页改为第一页再处理 使用代码修改默认页. 此方法删除表格中除了传入的页之外所有的页 /*

办公自动化18-将多个excel表中的多个sheet合并到一个excel中的一个sheet

合并前excel中的数据情况: 合并后的excel中数据情况: 附上代码如下: import pandas as pd year = ['2017','2018']#文件夹的命名 sheet_concat = pd.DataFrame() for i in range(len(year)): sheet = pd.read_excel('C:/Users/17360/Desktop/test/'+year[i]+'.xlsx',sheet_name = None,header= 0) #shee