C#将table保存Excel 的方法和读取Excel 返回dataset 的方法

 -导出Excel

      /// <summary>
        /// 导出Excel 
        /// </summary>
        /// <param name="FileName">文件名</param>
        /// <param name="DataSource">要导出的table</param>
        /// <param name="jkname">名称</param>
        /// <returns></returns>
        public bool CreateExcel(string FileName, System.Data.DataTable DataSource,string jkname)
        {
            bool flag = false;
            try
            {
                XlsDocument xls = new XlsDocument();
                org.in2bits.MyXls.Worksheet sheet1 = xls.Workbook.Worksheets.Add(jkname);
                XF xf = xls.NewXF();
                //xf.Font.Bold = true;
                xf.HorizontalAlignment = HorizontalAlignments.Centered;
                xf.Font.Height = 16 * 16;

                ColumnInfo columnInfo = new ColumnInfo(xls, sheet1);
                columnInfo.ColumnIndexStart = 0;
                columnInfo.ColumnIndexEnd = (ushort)(DataSource.Columns.Count - 2);
                columnInfo.Width = 15 * 300;
                sheet1.AddColumnInfo(columnInfo);

                Cells cells1 = sheet1.Cells;
                //合并单元格cells.Merge(1, 1, 1, 7);

                for (int j = 0; j < DataSource.Columns.Count; j++)
                {
                    cells1.Add(1, j + 1, DataSource.Columns[j].ColumnName, xf);
                }

                for (int l = 0; l < DataSource.Rows.Count; l++)
                {
                    for (int j = 0; j < DataSource.Columns.Count; j++)
                        cells1.Add(l + 2, j + 1, DataSource.Rows[l][j].ToString());
                }

                int fileI = FileName.LastIndexOf("\\");
                xls.FileName = FileName.Substring(fileI + 1, FileName.Length - (fileI + 1));
                string path = FileName.Substring(0, fileI + 1); ;
                xls.Save(path, true);
                flag = true;
            }
            catch (Exception ex)
            {
                flag = false;
                MessageBox.Show(ex.Message);
            }
            return flag;
        }

 二 读取Excel 的方法

/// <summary>
          /// 读取Excel文件里面的内容到DataSet
          /// </summary>
          /// <param name="Path">路径</param>
          /// <param name="ds">接收的ds</param>
          public  void ExcelToDS(string Path,ref DataSet ds)
          {
              string  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path  + ";" + "Extended Properties=Excel 8.0";
              OleDbConnection conn = new OleDbConnection(strConn);
             conn.Open();
 
             //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等  
             DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
 
             //包含excel中表名的字符串数组
             string[] strTableNames = new string[dtSheetName.Rows.Count];
             for (int k = 0; k < dtSheetName.Rows.Count; k++)
             {
                 strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
             }
 
             string strExcel = "";
             OleDbDataAdapter myCommand = null;
             strExcel = "select top 10  * from [" + strTableNames[0] + "] ";//strTableNames[0]取得第一个Sheet中的数据
             myCommand = new OleDbDataAdapter(strExcel, strConn);
             ds = new DataSet();
             myCommand.Fill(ds);
             conn.Close();
             conn.Dispose();
         }

 

posted @ 2017-07-17 14:23  游林  阅读(206)  评论(0编辑  收藏  举报