当前位置: 代码迷 >> C# >> 使用C#生成word或excel文档的有关问题
  详细解决方案

使用C#生成word或excel文档的有关问题

热度:88   发布时间:2016-05-05 04:16:58.0
使用C#生成word或excel文档的问题
如题:
使用C#生成WORD文档 .net4.0 vs2013 office2007
1.模板法:先建WORD文档,画好内容格式后,在内容地方插入书签.然后在C#载入文档,找相应书签赋值
2.用程序写入内容和格式信息
我想使用第1 种方法,因为用程序设定WORD文档的格式太麻烦了,
数据是一个表格,行数不确定.如果用第1 种方法的话, 要怎么样循环生成表格的内容?

------解决思路----------------------
用npoi可以实现
------解决思路----------------------
一、C#创建word文档
 private Word.Application G_wa;//定义Word应用程序字段
        private object G_missing = //定义G_missing字段并添加引用
            System.Reflection.Missing.Value;
        private FolderBrowserDialog G_FolderBrowserDialog;//定义浏览文件夹字段
        private object G_str_path;//定义文件保存路径字段

        private void btn_New_Click(object sender, EventArgs e)
        {
            btn_New.Enabled = false;//将新建按钮设置为不可用
            ThreadPool.QueueUserWorkItem(//开始线程池
                (pp) =>//使用lambda表达式
                {
                    G_wa = new Microsoft.Office.Interop.Word.Application();//创建应用程序对象
                    object P_obj = "Normal.dot";//定义文档模板
                    Word.Document P_wd = G_wa.Documents.Add(//向Word应用程序中添加文档
                        ref P_obj, ref G_missing, ref G_missing, ref G_missing);
                    G_str_path = string.Format(//计算文件保存路径
                        @"{0}\{1}", G_FolderBrowserDialog.SelectedPath,
                        DateTime.Now.ToString("yyyy年M月d日h时s分m秒fff毫秒") + ".doc");
                    P_wd.SaveAs(//保存Word文件
                        ref G_str_path,
                        ref G_missing, ref G_missing, ref G_missing, ref G_missing,
                        ref G_missing, ref G_missing, ref G_missing, ref G_missing,
                        ref G_missing, ref G_missing, ref G_missing, ref G_missing,
                        ref G_missing, ref G_missing, ref G_missing);
                    ((Word._Application)G_wa.Application).Quit(//退出应用程序
                        ref G_missing, ref G_missing, ref G_missing);
                    this.Invoke(//调用窗体线程
                        (MethodInvoker)(() =>//使用lambda表达式
                        {
                            MessageBox.Show(//提示已经创建Word
                                "成功创建Word文档!", "提示!");
                            btn_display.Enabled = true;//启用显示按钮
                        }));
                });
        }//codego.net/
二、创建Excel文件并保存
 private void btn_Create_Click(object sender, EventArgs e)
        {
            string P_str_path = txt_Path.Text;//记录路径
            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();//实例化Excel对象
            Microsoft.Office.Interop.Excel.Workbook newWorkBook = excel.Application.Workbooks.Add(true);//添加新工作簿
            object missing = System.Reflection.Missing.Value;//获取缺少的object类型值
            newWorkBook.Worksheets.Add(missing, missing, missing, missing);//向Excel文件中增加工作表
            if (P_str_path.EndsWith("\\"))//判断路径是否\结尾
                newWorkBook.SaveCopyAs(P_str_path + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls");//保存Excel文件
            else
                newWorkBook.SaveCopyAs(P_str_path + "\\" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls");//保存Excel文件
            MessageBox.Show("Excel文件创建成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);//弹出提示信息
            System.Diagnostics.Process[] excelProcess = System.Diagnostics.Process.GetProcessesByName("EXCEL");//实例化进程对象
            foreach (System.Diagnostics.Process p in excelProcess)
                p.Kill();//关闭进程
        }

------解决思路----------------------
引用:
DOCX也没有找到文档.

找Aspose.World 到官网上去下载
------解决思路----------------------
NPOI的DEMO
这是BS的,不过帮助类可以直接copy到CS里用,反正不过是一个类而已,跟架构没关系
  相关解决方案