C# 关于Excel 的操作

本文介绍了一种使用C#实现Excel自动化导出的方法。通过创建Excel应用程序实例并利用System.Reflection.Missing.Value来设置默认参数,实现了表格数据的填充、格式设置及文件保存。此过程涵盖了从数据绑定到最终文件导出的所有步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

System.Reflection.Missing miss = System.Reflection.Missing.Value;
            Excel.ApplicationClass m_objExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
            m_objExcel.Visible = true;
            Excel.Workbooks m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
            Excel.Workbook m_objBook = (Excel.Workbook)(m_objBooks.Add(miss));
            Excel.Worksheet m_ojbSheet = (Excel.Worksheet)m_objBook.ActiveSheet;
          // ((Excel.Range)(m_ojbSheet.Rows["1", Type.Missing])).Height = 10;

            m_ojbSheet.get_Range("A1", "N1").Merge(true);
            m_ojbSheet.get_Range("A1", "N1").Value2 = "厦门广播数字电视工程公司" + type + "收费情况表";
            m_ojbSheet.get_Range("A1", "N1").Font.Size = 18;

            m_ojbSheet.Cells[2,1] = "序号";
            m_ojbSheet.Cells[2,2] = "工单号";
            m_ojbSheet.Cells[2,3] = "客户编号";
            m_ojbSheet.Cells[2,4] = "用户名";
            m_ojbSheet.Cells[2,5] = "地址";
            m_ojbSheet.Cells[2,6] = "MAC地址";
            m_ojbSheet.Cells[2,7] = "收据号";
            m_ojbSheet.Cells[2,8] = "实收金额";
            m_ojbSheet.Cells[2,9] = "安装人员";
            m_ojbSheet.Cells[2,10] = "安装日期";
            m_ojbSheet.Cells[2,11] = "申请日期";
            m_ojbSheet.Cells[2,12] = "缴款日期";
            m_ojbSheet.Cells[2,13] = "备注";

            ((Excel.Range)(m_ojbSheet.Columns[10,Type.Missing])).ColumnWidth = ((Excel.Range)(m_ojbSheet.Columns[11,Type.Missing])).ColumnWidth = ((Excel.Range)(m_ojbSheet.Columns[12,Type.Missing])).ColumnWidth = 18;
            ((Excel.Range)(m_ojbSheet.Columns[5,Type.Missing])).ColumnWidth = 20;

            int rowIndex = 3;
            foreach (DataRow dr in dt.Rows)
            {
                m_ojbSheet.Cells[rowIndex, 1] = Convert.ToString(rowIndex - 2);
                m_ojbSheet.Cells[rowIndex, 2] = dr["工单号"].ToString();
                m_ojbSheet.Cells[rowIndex, 3] = dr["客户编号"].ToString();
                m_ojbSheet.Cells[rowIndex, 4] = dr["用户名"].ToString();
                m_ojbSheet.Cells[rowIndex, 5] = dr["地址"].ToString();
                m_ojbSheet.Cells[rowIndex, 6] = dr["MAC地址"].ToString();
                m_ojbSheet.Cells[rowIndex, 7] = dr["收据号"].ToString();
                m_ojbSheet.Cells[rowIndex, 8] = dr["实收金额"].ToString();
                ...
                rowIndex++;
            }

            string fileName = DateTime.Now.ToString().Replace(":", "").Replace("-", "").Replace(" ", "") + ".xls";
            if (!Directory.Exists("C://ExcelsTemp"))
            {
                Directory.CreateDirectory("C://ExcelsTemp");
            }
            if (File.Exists("C://ExcelsTemp//" + fileName))
            {
                File.Delete("C://ExcelsTemp//" + fileName);
            }
            try
            {
                m_objBook.SaveAs("C://ExcelsTemp//" + fileName, miss, miss, miss, miss, miss,
                              Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss, miss, miss); //保存到指定文件夹 
            }
            catch
            {
            }
            finally
            {
                m_objBook.Close(false, miss, miss);
                m_objBooks.Close();
                m_objExcel.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_ojbSheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBooks);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
                GC.Collect();
            }

            object missing = System.Reflection.Missing.Value;

            Excel.ApplicationClass excelApp = new Excel.ApplicationClass();
            Excel.Workbook workbook = excelApp.Workbooks.Open("C://ExcelsTemp//" + fileName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
            excelApp.Visible = true;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值