日期:2014-05-20  浏览次数:20957 次

求助:如何将数据填入到指定的EXCEL文件中?
现有一个EXCEL的模板。其格式如下:

                标题部分
-----------------
        表格部分:用于填写数据
-----------------
                脚注部分                           页码

现要求将数据库中读出的数据填到“表格部分”,对应的数据字段填写到相应的表格中。如果一张纸的表格填不下,则填写第二张纸。
该功能如何实现?由于以前没有做过excel相关的编程,所以高手们最好能够给出示例代码,兄弟谢过了!!!

------解决方案--------------------
友情UP
------解决方案--------------------
http://topic.csdn.net/t/20050310/12/3839773.html
------解决方案--------------------
用csv格式存吧
------解决方案--------------------
http://www.cnblogs.com/dahuzizyd/category/64340.html
------解决方案--------------------

您也可以先制作好模版,用Microsoft.Office.Interop.Excel.ApplicationClass把xsl文件打开后,参考下列方式添数据就行了。
你还可以设置字体,格式等等各种各样的内容。
http://blog.csdn.net/mysticboys/archive/2006/04/12/660860.aspx

/// <summary>
/// 把指定的DataSet中的内容导出到Excel中.
/// </summary>
/// <param name= "ds "> ds参数为DateSet对象 </param>
/// <param name= "ImpStr "> 该字符串用来指定一些字段来导出,其使用格式为:aaa|AAA,bbb|BBB 小写字符串为在Excel表中显示该字段的列标题,大写表示字段名.不同字段使用逗号分隔. </param>
/// <param name= "locR "> 数据导出到Excel中的开始行 </param>
/// <param name= "locC "> 数据导出到Excel中的开始列 </param>
/// <param name= "TitleStr "> 该字符串用来指定要导出的表和表的标题其格式为:aaa|AAA,bbb|BBB 小写为该表中显示的标题,大写为表名称.不同表使用逗号分隔 </param>
/// <param name= "TilteLocR "> 显示标题的行 </param>
/// <param name= "TitleLocC "> 显示标题的列 </param>
/// <param name= "ColTitleColorIndex "> 列标题颜色索引 </param>
/// <example> Import2Excel(this.dsData , "用户名|USERNAME,登录名|LOGINNAME ",3,1, "用户名列表|BILL_USER ",1,2 ,12); </example>
private void Import2Excel(System.Data.DataSet ds,string ImpStr ,int locR,int locC,string TitleStr,int TilteLocR, int TitleLocC,int ColTitleColorIndex )
{
//加载Excel
Microsoft.Office.Interop.Excel.ApplicationClass ex=new Microsoft.Office.Interop.Excel.ApplicationClass();
ex.Visible=true ;//显示Excel
if (ex==null)
{
//无法显示时报错
MessageBox.Show( "无法启动 Microsoft Office Excel,导出失败! ", "Import2Excel ", MessageBoxButtons.OK,MessageBoxIcon.Stop );
return ;
}
string[] tles=TitleStr.Split( ", ".ToCharArray());
string[] Imps=ImpStr.Split( ", ".ToCharArray()) ;
string[] tlbs=TitleStr.Split( ", ".ToCharArray ());
//获得工作薄
Microsoft.Office.Interop.Excel.Workbooks wbs =ex.Workbooks;
Microsoft.Office.Interop.Excel.Workbook wb= wbs.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);


int z=0;//Sheet索引
foreach (string tblname in tlbs)
{
z+=1;
//得到表和工作表一个工作表对应一个表,
string[] tbn=tblname.Split( "| ".ToCharArray());
System.Data.DataTable dt=ds.Tables[tbn[1].ToUpper() ];
Microsoft.Office.Interop.Excel.Worksheet ws=
(Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[z];
//工作表的第一行标题设置为该表的表名.
//从格式字符串中去表名对应的名称.
// int tm1=TitleStr.ToUpper().IndexOf(dt.TableName+ "| ")+dt.TableName.Length +1;
// string tit=TitleStr.Substring(tm1,TitleStr.IndexOf( ", ",tm1)-tm1);