DataSet和Excel之间的导入

之前在做一个处理Access数据库软件的时候,应用了DataSet这个工具,从数据库里提取的信息直接通过SQL语句加载到DataSet里,在通过绑定数据源的方式,显示到UI界面的DataGridView中。但是同事反映了一个问题,就是数据量太大的时候不好编辑,不管是在Access还是我做的软件里,那么能否把数据导入到Excel进行编辑,然后再导入dataset供UI界面显示或者保存到Access中呢?

这就是我做的软件。于是我百度找了相关资料,找到了2个函数。

  private DataSet doImport(string strFileName)            //从Excel导入到DataSet
          {
              if (strFileName=="") return null;


        string  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +


                 "Data Source=" +  strFileName + ";" +


                 "Extended Properties=Excel 8.0;";


              OleDbDataAdapter ExcelDA = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);


              DataSet ExcelDs = new DataSet();
           try
              {
                  ExcelDA.Fill(ExcelDs, "ExcelInfo");
              }
              catch(Exception err)


             {
                 System.Console.WriteLine( err.ToString() );
            }


             return ExcelDs;
        }

这个函数实现处理当前的Excel,然后返回一个DataSet。

 private void doExport(DataSet ds,string strExcelFileName)                  //从DataSet导入到Excel
         {
             Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();            
            //         Microsoft.Office.Interop.Excel.Workbook obj=new Microsoft.Office.Interop.Excel.WorkbookClass();
               //         obj.SaveAs("c:/zn.xls",Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel9795,null,null,false,false,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,null,null,null,null);


            int rowIndex=1;
            int colIndex=0;
            excel.Application.Workbooks.Add(true);
            System.Data.DataTable table = ds.Tables[0];
            foreach(DataColumn col in table.Columns)
            {
                 colIndex++;    
               excel.Cells[1,colIndex]=col.ColumnName;
             }
             foreach(DataRow row in table.Rows)
            {
                 rowIndex++;
                colIndex=0;
                 foreach(DataColumn col in table.Columns)
              {
                     colIndex++;
                  excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString();
                 }
             }
             excel.Visible=false;
             excel.ActiveWorkbook.SaveAs(strExcelFileName , Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, null, null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null);
            


           //wkbNew.SaveAs strBookName


           //excel.Save(strExcelFileName);


            excel.Quit();


            excel=null;       


            GC.Collect();//垃圾回收


        }

这个函数实现新建一个Excel表,保存你指定的内存中的DataSet。

其实在 excel.ActiveWorkbook.SaveAs(strExcelFileName , Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, null, null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null);

这行里面出现过一个问题,我把Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal参数更改了一下,就解决了。

这下当我需要大量数据编辑的时候,我就导出Excel表,方便多了!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值