网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

Asp.net操作Excel文件事例小结,基于ExtAspNet控件库

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

SQL查询Excel文件的语句:

  1. SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=D:\hxl\gxjt\gxjt\pay\excel\list.xls;Extended Properties=Excel 8.0; HDR=YES; 
  2. IMEX=1')Sheet1contentnbsp;

注:如遇到如下问题:
1)、已拒绝对 OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 的即席访问。必须通过链接服务器来访问此访问接口。
   答:登录数据库用户必须具有sa权限

1.把Excel里的数据转换为DataSet
方法一:

  1. /// <summary> 
  2. /// 把Excel里的数据转换为DataSet,并返回DataSet,缺点:当Excel文件中有两列的名称一样,则第二列起名称自动在末尾加‘1’ 
  3. /// </summary> 
  4. /// <param name="filenameurl">服务器上的路径</param> 
  5. /// <param name="sheetname">sheet名称</param> 
  6. /// <returns></returns> 
  7. public DataSet ExecleToDataSet(string filenameurl, string sheetname) 
  8.     string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'"
  9.     OleDbConnection conn = new OleDbConnection(strConn); 
  10.     OleDbDataAdapter odda = new OleDbDataAdapter("select * from [" + sheetname + "$]", conn); 
  11.     DataSet ds = new DataSet(); 
  12.     odda.Fill(ds, sheetname); 
  13.     return ds; 

注:当Excel文件中有两列的名称一样,则第二列起名称自动在末尾加'1'

方法二:

  1. /// <summary> 
  2.         /// 把Excel里的数据转换为DataTable,应用引用的com组件:Microsoft.Office.Interop.Excel.dll 读取EXCEL文件 
  3.         /// </summary> 
  4.         /// <param name="filenameurl">物理路径</param> 
  5.         /// <param name="sheetIndex">sheet名称的索引</param> 
  6.         /// <param name="splitstr">如果是已存在列,则自定义添加的字符串</param> 
  7.         /// <returns></returns> 
  8.         public DataTable ExecleToDataSet(string filenameurl, int sheetIndex, string splitstr) 
  9.         { 
  10.             // 
  11.             bool isEqual = false;//不相等 
  12.             ArrayList columnArr = new ArrayList();//列字段表 
  13.             DataSet myDs = new DataSet(); 
  14.             DataTable xlsTable = myDs.Tables.Add("show"); 
  15.             object missing = System.Reflection.Missing.Value; 
  16.             Excel.ApplicationClass excel = new Excel.ApplicationClass();//lauch excel application 
  17.             if (excel == null
  18.             { 
  19.                 Alert.Show("不能进入excel!"); 
  20.             } 
  21.             else 
  22.             { 
  23.                 excel.Visible = false
  24.                 excel.UserControl = true
  25.                 // 以只读的形式打开EXCEL文件 
  26.                 Excel.Workbook wb = excel.Workbooks.Open(filenameurl, missing, true, missing, missing, missing, 
  27.                  missing, missing, missing, true, missing, missing, missing, missing, missing); 
  28.                 //取得第一个工作薄 
  29.                 Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets.get_Item(sheetIndex); 
  30.                 //取得总记录行数(包括标题列) 
  31.                 int rowsint = ws.UsedRange.Cells.Rows.Count; //得到行数 
  32.                 int columnsint = ws.UsedRange.Cells.Columns.Count;//得到列数 
  33.                 DataRow dr; 
  34.                 for (int i = 1; i <= columnsint; i++) 
  35.                 { 
  36.                     //判断是否有列相同 
  37.                     if (i >= 2) 
  38.                     { 
  39.                         int r = 0; 
  40.                         for (int k = 1; k <= i - 1; k++)//列从第一列到第i-1列遍历进行比较 
  41.                         { 
  42.                             if (((Excel.Range)ws.Cells[1, i]).Text.ToString() == ((Excel.Range)ws.Cells[1, k]).Text.ToString()) 
  43.                             { 
  44.                                 //如果该列的值等于前面列中某一列的值 
  45.                                 xlsTable.Columns.Add(((Excel.Range)ws.Cells[1, i]).Text.ToString() + splitstr + (r+1).ToString(), typeof(string)); 
  46.                                 columnArr.Add(((Excel.Range)ws.Cells[1, i]).Text.ToString() + splitstr + (r + 1).ToString()); 
  47.                                 isEqual = true
  48.                                 r++; 
  49.                                 break
  50.                             } 
  51.                             else 
  52.                             { 
  53.                                 isEqual = false
  54.                                 continue
  55.                             } 
  56.                         } 
  57.                         if (!isEqual) 
  58.                         { 
  59.                             xlsTable.Columns.Add(((Excel.Range)ws.Cells[1, i]).Text.ToString(), typeof(string)); 
  60.                             columnArr.Add(((Excel.Range)ws.Cells[1, i]).Text.ToString()); 
  61.                         } 
  62.                     } 
  63.                     else 
  64.                     { 
  65.                         xlsTable.Columns.Add(((Excel.Range)ws.Cells[1, i]).Text.ToString(), typeof(string)); 
  66.                         columnArr.Add(((Excel.Range)ws.Cells[1, i]).Text.ToString()); 
  67.                     } 
  68.                 } 
  69.                 for (int i = 2; i <= rowsint; i++) 
  70.                 { 
  71.                     dr = xlsTable.NewRow(); 
  72.                     for (int j = 1; j <= columnsint; j++) 
  73.                     { 
  74.                         dr[columnArr[j - 1].ToString()] = ((Excel.Range)ws.Cells[i, j]).Text.ToString(); 
  75.                     } 
  76.                     xlsTable.Rows.Add(dr); 
  77.                 } 
  78.             } 
  79.             excel.Quit(); 
  80.             excel = null
  81.             System.Diagnostics.Process procs = System.Diagnostics.Process.GetProcessesByName("EXCEL"); 
  82.             foreach (System.Diagnostics.Process pro in procs) 
  83.             { 
  84.                 pro.Kill();//没有更好的方法,只有杀掉进程 
  85.             } 
  86.             GC.Collect(); 
  87.             return xlsTable; 
  88.         } 

2.获取Excel文件的Sheet名称,并邦定到DropDownList

  1.  [DllImport("user32.dll", CharSet = CharSet.Auto)] 
  2.         public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int id); 
  3.         /// <summary> 
  4.         /// 获取Excel文件的Sheet名称,并邦定到DropDownList 
  5.         /// </summary> 
  6.         /// <param name="FileFullName">服务器,物理路径 </param> 
  7.         protected void ExcelSheetToBind(string FileFullName) 
  8.         { 
  9.             string SplitString = FileFullName.Split('\\'); 
  10.             string FileName = SplitString[SplitString.Length - 1].ToString(); 
  11.             Excel.ApplicationClass oExcel = new Excel.ApplicationClass(); 
  12.             Excel.Workbook oBook = oExcel.Workbooks.Open(FileFullName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
  13. Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 
  14.             try 
  15.             { 
  16.                 DropDownList_datetable.Items.Clear(); 
  17.                 DropDownList_datetable.Items.Add("请选择工作表""0"); 
  18.                 foreach (Microsoft.Office.Interop.Excel.Worksheet sheet in oBook.Sheets) 
  19.                 { 
  20.                     DropDownList_datetable.Items.Add(new ExtAspNet.ListItem(sheet.Name, sheet.Name)); 
  21.                 } 
  22.             } 
  23.             catch 
  24.             { 
  25.             } 
  26.             finally 
  27.             { 
  28.                 IntPtr t = new IntPtr(oExcel.Hwnd); 
  29.                 int k = 0; 
  30.                 GetWindowThreadProcessId(t, out k); 
  31.                 System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k); 
  32.                 p.Kill(); 
  33.             } 
  34.         } 
设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师