请教一个问题:如何将一个excel文件按照sheet,拆分保存为多个excel文件?比如:excel文件里有3个sheet分别为:sheet1,sheet2,sheet3。如何将这个excel文件拆分,保存为3个excel文件?

解决方案 »

  1.   

    嘿嘿,用asp.net不会
    不过我可以用鼠标+键盘实现这个效果...
      

  2.   

    先读到datatable再导出吧,估计速度
      

  3.   

    那不行,excel文件里有表格样式,还有电子签章
      

  4.   

     OleDbConnection objConn = new OleDbConnection(strConn);            objConn.Open();
                DataTable dtExcelSchema = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
                string SheetName = "";            SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();//表名一般是三个
    表名都找到了,下面就继续你要的,分别对表操作
      

  5.   

    可以尝试
    先找到sheet,然后按sheet找表内的内容
      

  6.   

    先用Excel的application对象读取要拆分的Excel文件到workbook对象,遍历这个workbook对象的sheet,取出每一个sheet对象,再实例化一个空的workbook对象,把取出的每个sheet赋给新定义的workbook的sheet,用Copy方法到新workbook里,保存新workbook到指定路径即可!
                    Microsoft.Office.Interop.Excel.ApplicationClass app = new Microsoft.Office.Interop.Excel.ApplicationClass();
                    app.DisplayInfoWindow = false;
                    app.DisplayAlerts = false;                Microsoft.Office.Interop.Excel.Workbook book = null;                book = app.Workbooks.Open("原文件路径", 0, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);                for (int i = 0; i < book.Sheets.Count; i++)
                    {
                        Microsoft.Office.Interop.Excel.Worksheet wsh = (Microsoft.Office.Interop.Excel.Worksheet)book.Worksheets[i + 1];                    Microsoft.Office.Interop.Excel.Workbook bookNew = null;
                        bookNew = app.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
                        Microsoft.Office.Interop.Excel.Worksheet sheetNew = null;                    sheetNew = (Microsoft.Office.Interop.Excel.Worksheet)bookNew.Sheets.Add(Missing.Value, Missing.Value, 1, Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet);
                        //下面代码为去除生成新文件里多余的Sheet
                        if (!wsh.Name.Contains("Sheet"))
                        {
                            sheetNew = wsh;
                            sheetNew.Copy(bookNew.Sheets["Sheet1"], Missing.Value);
                            sheetNew.Name = System.IO.Path.GetFileName(wsh.Name);
                            int num = bookNew.Sheets.Count;
                            for (int j = 0; j < num; j++)
                            {
                                //获取Excel表中的sheet表
                                Microsoft.Office.Interop.Excel.Worksheet wsh2 = (Microsoft.Office.Interop.Excel.Worksheet)bookNew.Worksheets[j + 1];
                                if (wsh2.Name.Contains("Sheet"))
                                {
                                    //删除已存在的空sheet表
                                    wsh2.Delete();
                                    num--;
                                    j--;
                                }
                            }                    }                    app.CutCopyMode = Microsoft.Office.Interop.Excel.XlCutCopyMode.xlCopy;
                        bookNew.SaveAs("路径"+wsh.Name + ".xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlTemplate, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);                }
                    app.Quit();
                    System.Runtime.InteropServices.Marshal.ReleaseComObject((object)app);
                    GC.Collect();
      

  7.   

    虽然没写过类似的,不过给个思路:使用宏
    打开EXCEL文件,并新建空白EXCEL文件,然后,人工拷贝黏贴下,之后看看宏代码是怎么写的。
    最后根据宏代码写程序