cindy66666 2016-07-14 13:25 采纳率: 0%
浏览 1017
已采纳

按模式导出datagridview中的表格于Excel中并且不保存

//需要添加 Microsoft.Office.Interop.Excel引用
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();

        if (app == null)
        {
            //  Response.Write("服务器上缺少Excel组件,需要安装Office软件。");
            MessageBox.Show("缺少Excel组件,需要安装Office软件");
            return;
        }
         app.Visible = true;
        app.UserControl = true;
        Microsoft.Office.Interop.Excel.Workbooks workbooks = app.Workbooks;
        //当前项目的绝对路径
        string str = System.Environment.CurrentDirectory;

        //  Microsoft.Office.Interop.Excel._Workbook workbook = workbooks.Add("d:\\Template.xlsx"); //加载模板

        Microsoft.Office.Interop.Excel._Workbook workbook = workbooks.Add(str + "\\chuhuoTemplate1.xlsx"); //加载模板
        Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Sheets;
        // Microsoft.Office.Interop.Excel._Worksheet worksheet = (Microsoft.Office.Interop.Excel._Worksheet)sheets.get_Item(1); //第一个工作薄。
        Microsoft.Office.Interop.Excel._Worksheet worksheet = (Microsoft.Office.Interop.Excel._Worksheet)(sheets.get_Item(1));
        if (worksheet == null)
            return;  //工作薄中没有工作表.
         //1、获取数据。

        DataGridView d1 = new DataGridView();

        this.Controls.Add(d1);
        d1.Visible = false;
      DataBaseUtils db = new DataBaseUtils ();
        DataSet ds = new DataSet();
        string mysql = "select * from tbl_outdepot";
        ds = db.GetDataFromDB(mysql);

        DataTable dt = ds.Tables[0];  //--------------------------------------------------根据实际需要修改--------------!!!!!

        int rowCount = dt.Rows.Count;
        if (rowCount < 1)
            return; //没有数据,不需要导出。

        //动态加入填表日期  损耗
        worksheet.Cells[2, 2] = DateTime.Now.ToLongDateString();
        worksheet.Cells[2, 7] = "是";
        //2、写入数据,Excel索引从1开始。
          for (int i = 1; i <= rowCount; i++)
        {
            int row_ = 3 + i;  //Excel模板上表头和标题行占了3行,根据实际模板需要修改;
            int dt_row = i - 1; //dataTable的行是从0开始的。 
            worksheet.Cells[row_, 1] = i.ToString();
            worksheet.Cells[row_, 2] = dt.Rows[dt_row]["outid"].ToString();
            worksheet.Cells[row_, 3] = dt.Rows[dt_row]["outname"].ToString();
        }
         //调整Excel的样式。
        Microsoft.Office.Interop.Excel.Range rg = worksheet.Cells.get_Range("A3", worksheet.Cells[rowCount + 2, 8]);
        rg.Borders.LineStyle = 1; //单元格加边框。
        worksheet.Columns.AutoFit(); //自动调整列宽。
        //3、保存生成的Excel文件。
        //Missing 在System.Reflection命名空间下。


        // 添加申请人等信息
        worksheet.Cells[rowCount + 5, 1] = "出库人:" + "小张";
        worksheet.Cells[rowCount + 5, 4] = "申请人:" + "小李";
        worksheet.Cells[rowCount + 7, 1] = "审批人:" + "小松";

       string savaPath = "d:\\1\\出货单" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
        workbook.SaveAs(savaPath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                    问题是这句
 Microsoft.Office.Interop.Excel.Range rg = worksheet.Cells.get_Range("A3", worksheet.Cells[rowCount + 2, 8]);
    “object”未包含“get_Range”的定义
    怎么修改,之前看过的说是吧()改为[]这个不行,这个就直接连代码都是错的
  • 写回答

1条回答

  • threenewbee 2016-07-14 15:52
    关注

    Microsoft.Office.Interop.Excel.Range rg = worksheet.Cells.get_Range("A3", worksheet.Cells[rowCount + 2, 8]);
    ->
    Microsoft.Office.Interop.Excel.Range rg = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[rowCount + 2, 8];

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序