zoukankan      html  css  js  c++  java
  • DataTable数据导入到Excel 引用Microsoft Office 12.0 Object Library和 Microsoft Excel 14.0 Object Library 并且需要注意的问题

            /// <summary>
            /// 将DataTalbe导出到Excel中
            /// </summary>
            /// <param name="dt"></param>
            /// <param name="ProjectName">生成的Excel的Sheet的名字</param>
            /// <param name="filePath">保存的路径</param>
            public static void Export(System.Data.DataTable dt, string filePath)
            {
                if (dt == null)
                {
                    throw new Exception("数据表中无数据");
                }
                int eRowIndex = 1;
                int eColIndex = 1;
                int cols = dt.Columns.Count;
                int rows = dt.Rows.Count;
                Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
                Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
                try
                {
                    //列名的处理
                    for (int i = 0; i < cols; i++)
                    {
                        xlApp.Cells[eRowIndex, eColIndex] = dt.Columns[i].ColumnName;
                        eColIndex++;
                    }
                    //列名加粗显示
                    xlApp.get_Range(xlApp.Cells[eRowIndex, 1], xlApp.Cells[eRowIndex, cols]).Font.Bold = true;
                    xlApp.get_Range(xlApp.Cells[eRowIndex, 1], xlApp.Cells[rows + 1, cols]).Font.Name = "Arial";
                    xlApp.get_Range(xlApp.Cells[eRowIndex, 1], xlApp.Cells[rows + 1, cols]).Font.Size = "10";
                    eRowIndex++;
    
                    for (int i = 0; i < rows; i++)
                    {
                        eColIndex = 1;
                        for (int j = 0; j < cols; j++)
                        {
                            xlApp.Cells[eRowIndex, eColIndex] = dt.Rows[i][j].ToString();
                            eColIndex++;
                        }
                        eRowIndex++;
                    }
                    //控制单元格中的内容。
                    xlApp.Cells.EntireColumn.AutoFit();
    
                    xlApp.DisplayAlerts = false;
                    xlBook.SaveCopyAs(filePath);
                    xlApp.Workbooks.Close();
                }
                catch
                {
                    throw;
                }
                finally
                {
                    xlApp.Quit();
                    //杀掉Excel进程。
                    GC.Collect();
                }
            }
    

     注意:using Microsoft.Office.Interop.Excel;  VS2010 下 添加引用  COM选项中找Microsoft Office 12.0 Object Library  Microsoft Excel 14.0 Object Library

    引用目录下出现Microsoft.Office.Core     Microsoft.Office.Interop.Excel

    如果代码中出现  Excel.ApplicationClass()无法互嵌套操作类型 请改用适用的接口 

    把引用的Microsoft.Office.Interop.Excel 右击属性 嵌入互操作类型改为false即可

  • 相关阅读:
    JS中的间歇(周期)调用setInterval()与超时(延迟)调用setTimeout()相关总结
    jQuery中的height()、innerheight()、outerheight()的区别总结
    单行及多行文本溢出以省略号显示的方法总结
    Android图片缩放 指定尺寸
    Android开源SlidingMenu的使用
    说说Android应用的persistent属性
    Android使用init.rc触发脚本实现隐藏内置应用
    android之实现上下左右翻页效果
    Android中播放声音
    Android中StatFs获取系统/sdcard存储(剩余空间)大小
  • 原文地址:https://www.cnblogs.com/wuhuisheng/p/2738495.html
Copyright © 2011-2022 走看看