zoukankan      html  css  js  c++  java
  • 关于Excel操作

    Excel导入操作


    导入到dataSet
    方式一(dao的OleDb方式)
    excel导入到dataset

    string path=server.MapPath("excel/student.xls");
    dataSet ds=ExcelToDateSet(path);
    
    //excel导入到dataset的方法
    public dataset ExcelToDateSet(string path)
    {
           //excel版本为2003
           OleDbConnection con=new OleDbConnction("Provider=Microsoft.Jet.OLEDB.4.0;Extended properties="Excel 8.0;HDR=YES;IMEX=1";Data Source="+path);
           conn.open();
           OleDbDataAdapter da=new OleDbDataAdapter("select * from [Sheet$1]",conn);
    
           dataSet ds=new dataSet();
    
           da.Fill(ds);
    
            conn.close();
            return ds;
    }

     
    Eecel的导出
    //dataSet导入到Excel

    using Excel=Microsoft.Office.Interop.Excel;
    
    public void DataSetToExcel(dataSet ds)
    {
            //创建excel应用程序
          Excel.Application app=new Microsoft.Interop.Excel.Application();
            if(app!=null)
            {
                   //创建excel空工作簿
                Excel.Wookbook workbook=app.Workbooks.add(true);
                   //创建excel工作表
                Excel.Wooksheet worksheet=(Excel.Worksheet)workbook.Worksheet[1];
                   //设置表名
                worksheet.Name="stuInfo";
    
                   //Excel列名
                for(int col=0;col<ds.tables[0].Columns.count;col++)
                   {
                          worksheet.Cell[1,i+1]=ds.tables[0].Columns[col].Name;
                   }
                   int row=2;
                   //创建行
                for(int i=0;i<ds.tables[0].rows.count;i++)
                   {
                          for(int j=0;j<ds.tables[0].Columns.count;j++)
                          {
                                 worksheet.Cell[row,j+1]=ds.tables[0].rows[i][j].ToString();
                           }
                           row++;
                   }
                  //保存
           workbook.SaveAs(Server.MapPath("excel/stuInfo.xls"));
             //退出excel 
             workbook.close();
             app.Quit(); 
             }
    }
    
    

    将Excel文件导出到客户端
     需要在一般处理文件设置响应头和响应类型

    //响应数据类型
    context.Response.ContentType="Appliction/Excel";
    //文件头设置
    context.Response.AppendHander("content-disposition","attachment;FileName=stuInfo.xls");
    

     
    由于Excel驱动程序是以excel文件默认的8行数据来推测列的数据类型,excel的版本不同可能会出现的一些问题
    如果excel导出到GridView可能出现的问题:
    <1>数据无法显示
     解决思路:设置链接字符串中的参数IMEX=1,可以解决前8行不同数据类型无法完整显示。如果修改注册表中的"HKEY_LOCAL_MACHINESOFTWAREMicrosoteJet4.0EnginesExcel"下的TypeGuessRows的值为0,可以彻底解决因不同行含有不同的数据类型而无法显示的问题。
    <2>运行错误
     如果代码书写没有错误,可考虑版本问题,如果excel应用程序是excel 2007,连接字符串中的参数Extended Properties中的"Excel 8.0" 改为“Excel 12.0”


     

  • 相关阅读:
    Spring
    JavaWeb
    JDBC
    MYSQL
    IDEA个人常用快捷键
    Web前端-JAVASCRIPT
    Web前端-HTML
    注解与反射
    多线程
    区块链 ATS多策略量化机器人简介
  • 原文地址:https://www.cnblogs.com/fengyu-2/p/3484415.html
Copyright © 2011-2022 走看看