Dataset export Excel

Source: Internet
Author: User

 /// <summary>           ///            /// </summary>           /// <param name="dataSet">要导出的数据来源</param>           /// <param name="fileName">导出的Excel名称</param>           /// <param name="saveDirectoryName">要保存到服务器上文件夹的名称</param>           /// <param name="deleteOldFile">指示是否删除旧文件</param>           /// [特别说明] 当指定DataTable某列加入链接时,需在数据源给DataTable增设两个扩展属性  如下格式:           ///    DataTableShowLinkSettingsModel dsm=new DataTableShowLinkSettingsModel();           ///    dsm.IsShowLink = true;//设置该表是否显示超链接           ///    dsm.ShowLinkColumns = new int[] { 2};//设置哪一列显示为超链接           ///    dt2.ExtendedProperties.Add("DataTableShowLinkSettings", dsm);//放入扩展属性           public static string DataSetToLocalExcel(DataSet dataSet, string fileName, string saveDirectoryName, bool deleteOldFile)        {            if (dataSet==null)            {                return "count:0";            }            //设置导出文件在服务器上的文件夹               //saveDirectoryName = string.Empty;            deleteOldFile = true;            string exportDir = string.Empty;            string directoryPath = string.Empty;            string rootPath = HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath);            if (string.IsNullOrEmpty(saveDirectoryName))            {                directoryPath = rootPath + "UploadFiles\\ExportExcelFile";            }            else            {                directoryPath = rootPath + saveDirectoryName;            }            if (!Directory.Exists(directoryPath))            {                Directory.CreateDirectory(directoryPath);            }            exportDir = directoryPath;            //设置文件在服务器上的路径               string outputPath = exportDir + "\\" + fileName;            string dowloadUrl = "/UploadFiles/ExportExcelFile/" + fileName;            if (deleteOldFile)            {                if (System.IO.File.Exists(outputPath)) { System.IO.File.Delete(outputPath); }            }            object missing = System.Reflection.Missing.Value;            Excel.Application app = new Excel.ApplicationClass();            app.Application.Workbooks.Add(true);            Excel.Workbook excelWorkbook =  (Excel.Workbook)app.ActiveWorkbook;//获取添加的workbook            //创建Excel应用实例            //Application excelApp = new Application();            //创建Excel文档              //Workbook excelWorkbook = excelApp.Workbooks.Add(Type.Missing);            //for (int i = 0; i < dataSet.Tables.Count; i++)            //{            //    //excelWorkbook.Sheets.Add();            //    excelWorkbook.Worksheets.Add(Type.Missing,Type.Missing,1,Type.Missing);            //}                        int sheetIndex = 0;            foreach (System.Data.DataTable dt in dataSet.Tables)            {                try                {                     //每个table都要放到数组中以便于Excel绑定                    object[,] rawData = new object[dt.Rows.Count + 1, dt.Columns.Count];                    for (int col = 0; col < dt.Columns.Count; col++)                    {                        //把列明放到数组的第一行中                         rawData[0, col] = dt.Columns[col].ColumnName;                        //将数据放到数组中中每一列都添加到数组                        for (int row = 0; row < dt.Rows.Count; row++)                        {                            rawData[row + 1, col] = dt.Rows[row].ItemArray[col];                        }                    }                    //创建列标                       string finalColLetter = string.Empty;                    string colCharset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";                    int colCharsetLen = colCharset.Length;                    if (dt.Columns.Count > colCharsetLen)                    {                        finalColLetter = colCharset.Substring(                            (dt.Columns.Count - 1) / colCharsetLen - 1, 1);                    }                    finalColLetter += colCharset.Substring(                            (dt.Columns.Count - 1) % colCharsetLen, 1);                    ++sheetIndex;                                       //这种方式会自动创建一个sheet,因此先用了默认的,然后再添加                    Microsoft.Office.Interop.Excel.Worksheet excelSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkbook.Worksheets[sheetIndex];                                        //下一个页小于等于表格总数就加一个sheet                    if (sheetIndex+1<=dataSet.Tables.Count)                    {                        excelWorkbook.Worksheets.Add(Type.Missing, Type.Missing, 1, Type.Missing);                    }                                                            excelSheet.Name = dt.TableName;                    //工作区中的范围设定                     string excelRange = string.Format("A1:{0}{1}",                        finalColLetter, dt.Rows.Count + 1);                    excelSheet.get_Range(excelRange, Type.Missing).Value2 = rawData;                    // 第一行变成粗体                      ((Range)excelSheet.Rows[1, Type.Missing]).Font.Bold = true;                    //调整列宽为自适应                    Range allColumn = excelSheet.Columns;                     allColumn.AutoFit();                 }                catch (Exception)                {                    throw;                }                #region 设置超链接                //DataTableShowLinkSettingsModel dsm = dt.ExtendedProperties["DataTableShowLinkSettings"] == null ? null : (DataTableShowLinkSettingsModel)dt.ExtendedProperties["DataTableShowLinkSettings"];                //if (dsm != null)                //{                //    bool flag = dsm.IsShowLink;                //    int[] addHyperlinksColumnsList = dsm.ShowLinkColumns;                //    if (flag)                //    {                //        if (addHyperlinksColumnsList != null && addHyperlinksColumnsList.Length > 0)                //        {                //            int rowsCount = excelSheet.UsedRange.Rows.Count;                //            int columnCount = excelSheet.UsedRange.Columns.Count;                //            for (int i = 1; i < rowsCount; i++)                //            {                //                for (int j = 0; j < addHyperlinksColumnsList.Length; j++)                //                {                //                    Range range = (Range)excelSheet.Cells[i + 1, addHyperlinksColumnsList[j]];                //                    //要添加的单元格位置                   //                    string link = range.Cells.Value2 == null ? "" : range.Cells.Value2.ToString();                //                    excelSheet.Hyperlinks.Add(range, link, Type.Missing, Type.Missing, Type.Missing);                //                }                //            }                //        }                //    }                //}                #endregion            }                         app.Application.DisplayAlerts = false;//过程中的提示不弹出            //保存文档            excelWorkbook.SaveAs(outputPath);                        excelWorkbook.Close(true, missing,missing);            excelWorkbook = null;            //释放应用             app.Quit();            app = null;            //回收对象            GC.Collect();            GC.WaitForPendingFinalizers();            //DownExcelFromServer(outputPath, fileName);            return dowloadUrl;        }

 

Dataset export Excel

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.