chinaway

  最近碰到这么一个需求,客户要求把一个Excel工作簿里的所有的工作表都给单独的拆分出来,不仅要数据连格式也要保持,捯饬了一上午看到了点结果,呵呵,偶是菜鸟大家表笑话,如果有更好的方法可以分享一下……

  

 public void SplitExcelBooks(string strSourceExcel)
        {      
            string strConn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=\'" + strSourceExcel + "\';Extended Properties=\'Excel 8.0;HDR=Yes;IMEX=1;\'";
            OleDbConnection conn = new OleDbConnection(strConn);
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            DataSet ds = new DataSet();
            //获取Excel中所有工作表的名称
            DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
            if (null != dt && dt.Rows.Count > 0)
            {
                Object missing = Missing.Value;
                Microsoft.Office.Interop.Excel.Application m_objExcel = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbooks m_objWorkBooks = m_objExcel.Workbooks;
                Microsoft.Office.Interop.Excel.Workbook m_objWorkBook = m_objWorkBooks.Open(strSourceExcel, missing, missing, missing,
                    missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
                Microsoft.Office.Interop.Excel.Sheets m_objWorkSheets = m_objWorkBook.Sheets;

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //获取Excel的第i个sheet表(注:Excel中的sheet表是从1开始的)
                    Microsoft.Office.Interop.Excel.Worksheet m_objWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)m_objWorkSheets[i + 1];
                    Microsoft.Office.Interop.Excel.Workbooks m_objBooksNew = m_objExcel.Workbooks;
                    Microsoft.Office.Interop.Excel.Workbook m_objBookNew = (Microsoft.Office.Interop.Excel.Workbook)(m_objBooksNew.Add(true));
                    Microsoft.Office.Interop.Excel.Worksheet m_objWorkSheetNew = (Microsoft.Office.Interop.Excel.Worksheet)m_objBookNew.Worksheets[1];//取得sheet
                    m_objWorkSheet.Copy(m_objWorkSheetNew, missing);//将m_objWorkSheet表复制到新建立的m_objWorkSheetNew表中                

               m_objWorkSheetNew.SaveAs("+你要保存的路径+", missing, missing, missing,
                                missing, missing, missing, missing, missing, missing);
                }
            }
        }

分类:

技术点:

相关文章: