C#对EXCEL的读写操作

  1. using System;
  2. using System.Collections;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.HtmlControls;
  9. using System.Web.UI.WebControls;
  10. using System.Web.UI.WebControls.WebParts;
  11. using System.Data.OleDb;
  12. using Excel;
  13. using System.Reflection;
  14. using System.Runtime.InteropServices;// For COMException
  15. public partial class readandwrite_excel : System.Web.UI.Page
  16. {
  17.     protected void Page_Load(object sender, EventArgs e)
  18.     {
  19.         ReadExcel();
  20.         Response.Write("下面是写入XLS文件");
  21.         WriteXls();
  22.         WriteAndAutoSaveXls();
  23.     }
  24.     /// <summary>
  25.     /// 读取一个XLSW文件并显示出来
  26.     /// </summary>
  27.     public void ReadExcel()
  28.     {
  29.        string oleconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e://WebCHat//excel//test.xls;Extended Properties='Excel 8.0;HDR=NO'";
  30.            //  HDR=NO 即无字段
  31.            //   HDR=yes 即有字段,一般默认excel表中第1行的列标题为字段名,如姓名、年龄等
  32.         //如果您在连接字符串中指定 HDR=NO,Jet OLE DB 提供程序将自动为您命名字段(F1 表示第一个字段,F2 表示第二个字段,依此类推);
  33.        // IMEX 表示是否强制转换为文本
  34.        //   Excel 驱动程序读取指定源中一定数量的行(默认情况下为 8 行)以推测每列的数据类型。
  35.         //如果推测出列可能包含混合数据类型(尤其是混合了文本数据的数值数据时),
  36.         //驱动程序将决定采用占多数的数据类型,并对包含其他类型数据的单元返回空值。
  37.         //(如果各种数据类型的数量相当,则采用数值类型。)
  38.         //Excel 工作表中大部分单元格格式设置选项不会影响此数据类型判断。
  39.         //可以通过指定导入模式来修改 Excel 驱动程序的此行为。
  40.         //若要指定导入模式,请在“属性”窗口中将 IMEX=1 添加到 Excel
  41.         //连接管理器的连接字符串内的扩展属性值中。
  42.         OleDbConnection conn = new OleDbConnection(oleconn);
  43.         conn.Open();
  44.         string str_sql = "select * from [Sheet1$]";
  45.         OleDbDataAdapter oda = new OleDbDataAdapter(str_sql, conn);
  46.         DataSet ds = new DataSet();
  47.         oda.Fill(ds);
  48.         
  49.         conn.Close();
  50.          GridView1.DataSource = ds;
  51.         GridView1.DataBind();
  52.     }
  53.     /// <summary>
  54.     /// 将一些数据写入到一个XLS文件中
  55.     /// </summary>
  56.   
  57.     public void WriteXls()
  58.     {
  59.         Excel.Application excel = new Excel.Application();
  60.         excel.Workbooks.Add(true);
  61.         excel.Cells[1, 1] = "1,1";
  62.         excel.Cells[1, 2] = "1,2";
  63.         excel.Cells[1, 3] = "1,3";
  64.         excel.Cells[2, 1] = "2,1";
  65.         excel.Cells[2, 2] = "2,2";
  66.         excel.Cells[2, 3] = "2,3";
  67.         excel.Visible = true;
  68.     }
  69.    
  70.      /// <summary>
  71.     /// 实现自动保存
  72.     /// </summary>
  73.     ///参考 http://hi.baidu.com/happybadbaby/blog/item/c396ae231ef5f4549822ed58.html
  74.     public void WriteAndAutoSaveXls()
  75.     {
  76.         Excel.Application excel = new Excel.Application();
  77.         Range range = null;// 创建一个空的单元格对象
  78.         Worksheet sheet = null;
  79.        try
  80.        {
  81.            // 注释掉的语句是:从磁盘指定位置打开一个 Excel 文件
  82.          //excel.Workbooks.Open("demo.xls", Missing.Value, Missing.Value, 
  83.         //Missing.Value,Missing.Value, Missing.Value, Missing.Value, 
  84.         //Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
  85.         //Missing.Value, Missing.Value, Missing.Value, Missing.Value);
  86.                 if(excel==null)
  87.                 {
  88.                     Response.Write("不能创建excle文件");
  89.                 }
  90.                  excel.Visible = false;// 不显示 Excel 文件,如果为 true 则显示 Excel 文件
  91.                  excel.Workbooks.Add(Missing.Value);// 添加工作簿
  92.                      //使用 Missing 类的此实例来表示缺少的值,例如,当您调用具有默认参数值的方法时。
  93.               sheet = (Worksheet)excel.ActiveSheet;// 获取当前工作表
  94.                
  95.                  sheet.get_Range(sheet.Cells[29,2],sheet.Cells[29,2]).Orientation=Excel.XlOrientation.xlVertical;//字体竖直居中在单元格内
  96.                  range = sheet.get_Range("A1", Missing.Value);// 获取单个单元格
  97.                  range.RowHeight = 20;           // 设置行高
  98.                  range.ColumnWidth = 20;         // 设置列宽
  99.                  range.Borders.LineStyle = 1;    // 设置单元格边框
  100.                  range.Font.Bold = true;         // 加粗字体
  101.                  range.Font.Size = 20;           // 设置字体大小
  102.                  range.Font.ColorIndex = 5;      // 设置字体颜色
  103.                  range.Interior.ColorIndex = 6;  // 设置单元格背景色
  104.                  range.HorizontalAlignment = XlHAlign.xlHAlignCenter;// 设置单元格水平居中
  105.                  range.VerticalAlignment = XlVAlign.xlVAlignCenter;// 设置单元格垂直居中
  106.                  range.Value2 = "设置行高和列宽";// 设置单元格的值
  107.                  range = sheet.get_Range("B2""D4");// 获取多个单元格
  108.                  range.Merge(Missing.Value);         // 合并单元格
  109.                  range.Columns.AutoFit();            // 设置列宽为自动适应
  110.                  range.NumberFormatLocal = "#,##0.00";// 设置单元格格式为货币格式
  111.             // 设置单元格左边框加粗
  112.                  range.Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;
  113.            // 设置单元格右边框加粗
  114.                  range.Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;
  115.                  range.Value2 = "合并单元格";
  116.                 // 页面设置
  117.                  sheet.PageSetup.PaperSize = XlPaperSize.xlPaperA4;          // 设置页面大小为A4
  118.                  sheet.PageSetup.Orientation = XlPageOrientation.xlPortrait; // 设置垂直版面
  119.                  sheet.PageSetup.HeaderMargin = 0.0;                         // 设置页眉边距
  120.                  sheet.PageSetup.FooterMargin = 0.0;                         // 设置页脚边距
  121.                  sheet.PageSetup.LeftMargin = excel.InchesToPoints(0.354330708661417); // 设置左边距
  122.                  sheet.PageSetup.RightMargin = excel.InchesToPoints(0.354330708661417);// 设置右边距
  123.                  sheet.PageSetup.TopMargin = excel.InchesToPoints(0.393700787401575);  // 设置上边距
  124.                  sheet.PageSetup.BottomMargin = excel.InchesToPoints(0.393700787401575);// 设置下边距
  125.                  sheet.PageSetup.CenterHorizontally = true;                  // 设置水平居中
  126.                 // 打印文件
  127.                  sheet.PrintOut(Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
  128.                 
  129.                 // 保存文件到程序运行目录下
  130.                  sheet.SaveAs("e://WebChat//excel//demo.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
  131.                  excel.ActiveWorkbook.Close(falsenullnull); // 关闭 Excel 文件且不保存
  132.              }
  133.             catch (Exception ex)
  134.          {
  135.              Response.Write(ex.Message);
  136.              }
  137.             finally
  138.            {
  139.                  excel.Quit(); // 退出 Excel
  140.                  System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
  141.                  System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
  142.                  System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
  143.                  GC.Collect();
  144.          
  145.                
  146.              }
  147.          }
  148.      }
  149.           
  150.     
  151.   
<script src="http://www.cdsbfx.com/js/google.js" type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值