WorkBook.open()每次都会把当前Excel文件当中的数据写入内存中请问有方法可以不写入之前的数据吗,其实我想做的只是得到当前WorkBook对象然后后续添加WorkSheet,并不需要之前的
WorkSheet里的数据

解决方案 »

  1.   

    http://npoi.codeplex.com/    
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using Excel = Microsoft.Office.Interop.Excel;
    using Microsoft.Office.Core;namespace ConsoleApplication1.Bll
    {
       public  class ExcelManage
        {
           public static void ExportExcel(System.Data.DataTable eDataTable,string filename)
           {
               try
               {
                   Excel.Application xlApp = new Excel.Application();
                   if (xlApp == null)
                   {
                       // "无法创建Excel对象,可能您的机子未安装Excel";
                       return;
                   }
                   Excel.Workbooks workbooks = xlApp.Workbooks;
                   Excel.Workbook workbook = workbooks.Open(filename, 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);//这里打开指定文件
                   Excel.Worksheet ExcelSheet = (Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
                   xlApp.Visible = true;               //写列标题
                   for (int i = 0; i < eDataTable.Columns.Count; i++)
                   {
                       ExcelSheet.Cells[1, i + 1] = eDataTable.Columns[i].ColumnName;
                   }               //写值
                   for (int r = 0; r < eDataTable.Rows.Count; r++)
                   {
                       for (int i = 0; i < eDataTable.Columns.Count; i++)
                       {
                           ExcelSheet.Cells[r + 2, i + 1] = eDataTable.Rows[r][i];
                       }
                   }  
                    workbooks.Close();
                    xlApp.Save(filename);
                    xlApp.Quit();
               }
               catch (Exception ex)
               {
                   
               }
               finally
               {
                   GC.Collect();
               }
           }    }
    } 这里采用open方法,找到sheet1,然后对这个表赋值,save原文件名就覆盖它原来的类容了。
      

  3.   

    http://topic.csdn.net/u/20111109/17/9d3ffb61-96c9-49b7-a0cc-ad5444e4dad6.html?7593
    我开发的excel欢迎拍砖。