当前位置:编程学习 > C#/ASP.NET >>

C#怎么写excel

我要的效果如下图,可以写死,也可以动态的,我数据是从数据库拿的。怎么写到下面的效果。
--------------------编程问答-------------------- 可以把这个excel文件的格式做成模版吗?如果数据是动态的,而格式是一定的就好操作多了。用NPOI或者微软的excel组件都可以做到,读取excel模版,动态添加数据到指定单元格,然后生成excel文件。至于有单元格合并的情况也不怕,像大连组实际上是在A4单元格的位置,向A4写大连组这个字符串就可以,最后save就行了。
refer:
http://blog.csdn.net/downmoon/article/details/6329814
http://blog.csdn.net/chinacsharper/article/details/8980456 --------------------编程问答--------------------
引用 1 楼 guwei4037 的回复:
可以把这个excel文件的格式做成模版吗?如果数据是动态的,而格式是一定的就好操作多了。用NPOI或者微软的excel组件都可以做到,读取excel模版,动态添加数据到指定单元格,然后生成excel文件。至于有单元格合并的情况也不怕,像大连组实际上是在A4单元格的位置,向A4写大连组这个字符串就可以,最后save就行了。
refer:
http://blog.csdn.net/downmoon/article/details/6329814
http://blog.csdn.net/chinacsharper/article/details/8980456

数据库动态,格式是一定的。 --------------------编程问答-------------------- 做成模板文件,
程序里打开模板文件,
在相应地的单元格里填数据库中读出来的内容就行了 --------------------编程问答--------------------
引用 3 楼 lzxue1989 的回复:
做成模板文件,
程序里打开模板文件,
在相应地的单元格里填数据库中读出来的内容就行了

给个实例,我没做过那个,不会。 --------------------编程问答--------------------
引用 1 楼 guwei4037 的回复:
可以把这个excel文件的格式做成模版吗?如果数据是动态的,而格式是一定的就好操作多了。用NPOI或者微软的excel组件都可以做到,读取excel模版,动态添加数据到指定单元格,然后生成excel文件。至于有单元格合并的情况也不怕,像大连组实际上是在A4单元格的位置,向A4写大连组这个字符串就可以,最后save就行了。
refer:
http://blog.csdn.net/downmoon/article/details/6329814
http://blog.csdn.net/chinacsharper/article/details/8980456


 protected void AddExcel(DataSet ds)
        {
            DataTable dt = ds.Tables[0];
            //获取excel的文件名称(Guid是一个全球表示,使excel的文件名不同)
           //--- string fileName = Guid.NewGuid() + ".xls";
            string fileName = System.DateTime.Now.ToString("yyyymmdd");
            //初始化excel对象
            Excel.Application excel = new Excel.ApplicationClass();
            //Excel.Application excel1 = new Excel.ApplicationClass();
            //定义列
            int rowIndex = 3;
            //定义行
            int colIndex = 0;
            //开始添加
            excel.Application.Workbooks.Add(true);
            Excel.Range range = excel.get_Range(excel.Cells[1, 1], excel.Cells[2, 1]);
            //Excel.Range range1 = excel.get_Range(excel.Cells[2, 1], excel.Cells[3, 1]);
            //myrange.NumberFormatLocal = "asd";
            Excel.Workbooks workbooks = excel.Workbooks;
            Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
            Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
            range.NumberFormatLocal = "@";     //设置单元格格式为文本   
            Excel.Worksheet workSheet = (Excel.Worksheet)workbook.Worksheets[1];
            Excel.Range excelRange = workSheet.get_Range(workSheet.Cells[2, 1], workSheet.Cells[2, 1]);
            workSheet.get_Range("A1", "M1").Merge(workSheet.get_Range("A1", "O1").MergeCells);
            workSheet.get_Range("B2", "M2").Merge(workSheet.get_Range("B2", "O2").MergeCells);
            worksheet.Cells[2, 1] = "2010年第二季度产品质量定期监督检查动态监管档案表";     //Excel单元格赋值 
            worksheet.Cells[4, 1] = "序号";
            worksheet.Cells[4, 2] = "产品分类";
            worksheet.Cells[4, 3] = "企业名称";
            worksheet.Cells[4, 4] = "详细地址及邮政编码";
            worksheet.Cells[4, 5] = "企业负责人及联系电话";
            workSheet.Cells[4, 6] = "企业规模许可证书编号";
            //向Excel表格中添加数据
            foreach (DataRow row in dt.Rows)
            {
                rowIndex++;
                colIndex = 0;
                for (colIndex = 0; colIndex < dt.Columns.Count; colIndex++)
                {
                    excel.Cells[rowIndex, colIndex + 1] = row[colIndex].ToString();
                }
            }
            //导出表格后是否打开,(false)为不打开  (true)为打开
            excel.Visible = false;

            //保存文件(可以自己更改路径)
            excel.Save(fileName);
            //关闭excel
            excel.Quit();
            //清空excel中的内容
            excel = null;

            GC.Collect();//垃圾回收 
        }


这里导出来的时候,为什么要保存两个excel? --------------------编程问答-------------------- 这个应该是EXCEL的简单列子  用模板写死最简单

不写死也简单  直接调用格式化都可以

用NPOI或者微软的excel --------------------编程问答-------------------- 我在想,有没有办法可以用参数来传值,比如我在EXCEL模板里任意一个单元格设个“Name”,然后数据库的字段就绑定到EXCEL模板里的name
--------------------编程问答-------------------- 方法多种多样,要么用Office PIA之类的方案,要么用NPOI之类的方案。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,