C# 导出word 表格代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Reflection;

using System.IO;

using System.Data.SqlClient;

using System.Data;

namespace WebApplication1

{

public partial class PrintWord : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

// QueryDataSet();

}

/// <summary>

/// 导出

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void btnPrint_Click(object sender, EventArgs e)

{

Print();

}

/// <summary>

/// 导出Word

///生成word解决方案

///1.先引入模板

///2.判断是否和查询数据集一样的行,如果小于数据集就要增到行数

///3. 获取表格并且并且为每一个单元格赋值

///4.根据不同的条件来设置单元格的颜色变化

/// </summary>

private void Print()

{

//先引入word

Microsoft.Office.Interop.Word.Application app; //明一个应用

Microsoft.Office.Interop.Word.Document doc;  //创建一个文档

string TemplateFile = ""; // 声明要使用的模板名称

string FileName = ""; // 新文件的路径名称

string Fname = ""; //新文件名称

app = new Microsoft.Office.Interop.Word.Application();//创建实例应用

doc = new Microsoft.Office.Interop.Word.Document();  //创建实例文档

TemplateFile = Server.MapPath("~/test/半月带预测-长安汽车每日快报2015010x.dot"); //Server.MapPath("~/test/CAXSMB.dot");//找到模板

Fname = DateTime.Now.ToString("测试相同的文档名试试") + ".doc";//创建新文件的名称 yyyymmddhhmmss

FileName = Server.MapPath("~/test/download/" + Fname);//新文件的路径

//判断有相同的文档就要删除

if (File.Exists(FileName))

{

File.Delete(FileName);

}

File.Copy(TemplateFile, FileName);//把模板拷贝到新文件

//为新文件设置属性

object Obj_FileName = FileName;

object Visible = false;

object ReadOnly = false;

object missing = System.Reflection.Missing.Value;

//创建新文档

doc = app.Documents.Open(

ref Obj_FileName, ref missing, ref ReadOnly, ref missing,

ref missing, ref missing, ref missing, ref missing,

ref missing, ref missing, ref missing, ref Visible,

ref missing, ref missing, ref missing,

ref missing);

//增加表格

//DataSet ds = GetDataSet();//获取程序集合

//int dsCount = ds.Tables[0].Rows.Count;//得到数据库表中的数据

//int docCount = doc.Tables[1].Rows.Count; //得到文档中表格的数据

//if (dsCount > docCount) //当实际数据大约表格数据的时候创建行

//{

//    //开始增加行

//    Microsoft.Office.Interop.Word.Table newTable = doc.Tables[1];

//    for (int row = 0; row < dsCount - docCount; row++)

//    {

//        object beforeRow = doc.Tables[1].Rows[docCount-1];

//        doc.Tables[1].Rows.Add(ref beforeRow); // 行添加到表格中

//    }

//}

doc.Activate();

// 匹配表格数据集

Microsoft.Office.Interop.Word.Document odoc = GetDocument(FileName);//获取新生的文档

DataSet ds = GetDataSet();//获取程序集合

//开始判断里面有几个表格/因为模板里面有三张表

for (int tablePos = 1; tablePos <= odoc.Tables.Count; tablePos++)

{

//都一张表的时候

if (tablePos == 1)

{

int dsCount = ds.Tables[0].Rows.Count;//得到数据库表中的数据

int docCount = odoc.Tables[1].Rows.Count; //得到文档中表格的数据

if (dsCount > docCount) //当实际数据大约表格数据的时候创建行

{

//开始增加行

Microsoft.Office.Interop.Word.Table newTable = doc.Tables[1];

for (int row = 0; row < (dsCount - docCount)+1; row++)

{

object beforeRow = newTable.Rows[docCount];

newTable.Rows.Add(ref beforeRow); // 行添加到表格中

}

}

//表格完成之后开始增加数据,为单元格赋值

for (int rcount = 0; rcount < ds.Tables[0].Rows.Count; rcount++)

{

for (int ccount = 0; ccount < ds.Tables[0].Columns.Count; ccount++)

{

//doc.Tables[1].Rows[rowPos].Cells[columPos].Range.Text

string strText = ds.Tables[0].Rows[rcount][ccount].ToString();

doc.Tables[1].Rows[rcount+2].Cells[ccount + 1].Range.Text = strText;//从第二行开始算起

if (strText == "r")

{

doc.Tables[1].Rows[rcount+2].Cells[ccount + 1].Range.Shading.BackgroundPatternColor = Microsoft.Office.Interop.Word.WdColor.wdColorLightBlue;

}

}

}

}

}

//关闭进程

object IsSave = true;

doc.Close(ref IsSave, ref missing, ref missing);

app.Quit(ref IsSave, ref missing, ref missing);            //关闭word进程

string url = "~/test/download/" + Fname; ;

Response.Redirect(url);

System.Runtime.InteropServices.Marshal.ReleaseComObject(app);    //释放内存空间

}

/// <summary>

/// 查询数据集

/// </summary>

/// <returns></returns>

public DataSet GetDataSet()

{

string sConnectionString = "server=.;uid=sa;pwd=123456;database=xiaoshoudb";

SqlConnection objConn = new SqlConnection(sConnectionString);

objConn.Open();

SqlDataAdapter da = new SqlDataAdapter("select * from  yuexiaoshou", objConn);

DataSet ds = new DataSet();

da.Fill(ds);

objConn.Close();

return ds;

}

/// <summary>

/// 根据文件地址得到该文件下属性

/// </summary>

/// <param name="fileRoad"></param>

/// <returns></returns>

public Microsoft.Office.Interop.Word.Document GetDocument(string fileRoad)

{

Microsoft.Office.Interop.Word.Application app;

app = new Microsoft.Office.Interop.Word.Application();

object oFileName = fileRoad;  //Server.MapPath(fileRoad);//根据word的路径         //("~/test/测试读写.docx");  // @"F:\数据库.docx";

object oReadOnly = false;

object oMissing = System.Reflection.Missing.Value;

Microsoft.Office.Interop.Word._Application oWord;

Microsoft.Office.Interop.Word.Document oDoc;

oWord = new Microsoft.Office.Interop.Word.Application();

oWord.Visible = false;

oDoc = oWord.Documents.Open(ref oFileName, ref oMissing, ref oReadOnly, ref oMissing, ref oMissing,

ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);

return oDoc;

}

}

}

时间: 2024-11-06 03:55:36

C# 导出word 表格代码的相关文章

poi导出word表格跨行

DataCommon.java package com.ksource.pwlp.model.statistic; public class DataCommon { private Long id; private String name; private String otherName; private String dataName; private String otherDataName; private int value; private float otherValue; pr

c#(.net) 导出 word表格

做了差不多一周的导出Word,现在把代码贴出来   : ExportWord.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Data; 6 using System.IO; 7 8 9 /// <summary> 10 ///DaoChuWord 的摘要说明 11 /// </summary> 12 publ

.net使用AsposeWord导出word table表格

本文为原创,转载请注明出处 1.前言 .net平台下导出word文件还可以使用Microsoft.Office.Interop和NPOI,但是这两者都有缺点,微软的Office.Interop组件需要程序运行的主机上安装office,至于NPOI,由于长期无人维护,BUG众多,各种对象和属性名的命名也十分混乱,不易读懂,在使用上带来一定的难度,因此为了规避这两者的缺点,目前最佳的选择是使用AsposeWord这个组件来导出word文件. 2.说明 下面是使用AsposeWord导出word表格的

Java使用velocity导出word

效果展示: 使用word编辑好模板 先在模板中填充部分数据(之所以先写好两条数据,是为了在保存为xml用文本编辑器打开后快速定位到需要出传入的数据.增加不同颜色的两条数据,是为了判断颜色),然后保存文件为 然后再用普通的文本编辑器打开 以上是模板的创建. 导出后的word文档展示 开发过程记录: 1,  首先创建工程,导入 2,  创建模板文件,将修改好的xml文件用普通文本工作打开,然后复制到改文件中. 3,  新建 4,  执行该类,即可导出word. 代码展示: Person.java i

Struts2利用iText导出word文档(包含表格)以提供下载

J2EE ExcelStrutsXML 在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了,用的是Struts2+poi实现的.poi对excel表格操作能力很强,但是对word文档的支持一直没有更新,操作能力有限. iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf 的文档,而且可以将XML.Ht

利用jQuery-Word-Export导出word (含表格,ECharts)

写在前面的话:写博客的初衷是想把自己学到的知识总结下来,在写的过程中,相当于又把知识梳理了一遍.我坚信有输入,有输出,技术才会进步.我一般都会自己写一个小demo,测试没有问题,再进行整理. 在实际做项目的过程中,遇到问题,也是各种查,所以很感谢把知识分享出来的人,而我也愿意把我在项目中遇到的问题写下来,一来是巩固自己的知识点,二来如果能帮助到别人,那就更好啦. 我写的有些方法,看来有些笨,我也会继续探索和研究.如有更好的方法,可以一起交流. 正文开始~~~~ 一.jQuery-Word-Exp

使用POI导出Word(含表格)的实现方式及操作Word的工具类

转载请注明出处:https://www.cnblogs.com/sun-flower1314/p/10128796.html 本篇是关于利用Apache 的POI导出Word的实现步骤.采用XWPFDocument导出Word,结构和样式完全由代码控制,操作起来还是非常的不太方便,只能够创建简单的word,不能设置样式,功能太少.但在这里还是实现一下,毕竟做过. 首先声明一些基本概念: XWPFDocument代表一个docx文档,其可以用来读docx文档,也可以用来写docx文档 XWPFPa

freemarker导出word——让表格数据行数 列数自动变化

行数.列数变化只需定义一个List<List<T>> freemarker遍历的话,只需要使用freemarker的标记性语言<#list report.qc_third_agentTable as  table2_tr>遍历即可,如图 实现的效果 freemarker导出word--让表格数据行数 列数自动变化,布布扣,bubuko.com

网页内容导出word/excel的js代码

IE设置: 工具-> Internet选项-> 安全->自定义级别-> 对没有标记安全级别的ActiveX控件进行初始化  设为启用! 1.导出word //指定区域导出到Word function html2word(Area) { var oWD = new ActiveXObject("Word.Application"); var oDC = oWD.Documents.Add("", 0, 1); var oRange = oDC.