按模式导出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个回答

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];

cindy66666
cindy66666 还有一件事,虽然我的成功了但是我同学的不行,这是为什么呢
3 年多之前 回复
cindy66666
cindy66666 谢大神,解决了我的问题
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问