Npoi2.0.5导出word合并行和合并列

更新时间:2023-10-01 11:10:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

using System;

using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI;

using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Text; using System.Data;

using System.Collections; using System.IO; using NPOI;

using NPOI.HSSF.UserModel; using DAL = CC.DAL; using CC.Common; using BLL = CC.BLL;

using NPOI.XWPF.UserModel; using NPOI.OpenXml4Net;

using NPOI.OpenXmlFormats.Wordprocessing; /********************

* 功能:食谱分析报告导出 * 编写人:

* 日期:2014.5.27 * nopi版本:2.0.5.0 ********************/

public partial class ExportFoodCheckList : BasePage {

#region //加载模板

protected void Page_Load(object sender, EventArgs e) {

if (Request[\ {

string type = Request[\

int RecweekId = int.Parse(Request[\ ViewState[\ if (type == \ {

XWPFDocument doc = HtmlExport(Int32.Parse(ViewState[\0);//.Replace(\border='0' class='table_food mt10'\\border='1' \border='0' class='table_food mt10'\\

string wordFile = Server.MapPath(\模板.docx\ FileInfo file = new FileInfo(wordFile); if (file.Exists) {

FileStream out1 = new FileStream(wordFile, FileMode.Create); doc.Write(out1); out1.Close();

openWindowExport(wordFile, \食谱.docx\

} } else {

XWPFDocument doc = new XWPFDocument(); string wordFile = Server.MapPath(\模板.docx\ FileInfo file = new FileInfo(wordFile); if (file.Exists){

doc = tbGetReport(Int32.Parse(ViewState[\doc);

FileStream out1 = new FileStream(wordFile, FileMode.Create); doc.Write(out1); out1.Close();

openWindowExport(wordFile, \食谱分析报告.docx\ } }

} }

public static string openWindowExport(string strFileName,string downfile) {

string strReutrn = \ try {

FileInfo DownloadFile = new FileInfo(strFileName); System.Web.HttpContext.Current.Response.Clear();

System.Web.HttpContext.Current.Response.ClearHeaders(); System.Web.HttpContext.Current.Response.Buffer = false; System.Web.HttpContext.Current.Response.ContentType = \

System.Web.HttpContext.Current.Response.AppendHeader(\\

+ System.Web.HttpUtility.UrlEncode(downfile, System.Text.Encoding.UTF8)); System.Web.HttpContext.Current.Response.AppendHeader(\

DownloadFile.Length.ToString());

System.Web.HttpContext.Current.Response.WriteFile(DownloadFile.FullName); }

catch (Exception Ex) {

strReutrn = Ex.Message; }

finally {

System.Web.HttpContext.Current.Response.Flush(); System.Web.HttpContext.Current.Response.End(); }

return strReutrn; }

#endregion

#region//导出食谱

private XWPFDocument HtmlExport(int recpweekId, int dispalyMaterial) {

XWPFDocument doc = new XWPFDocument();

XWPFSettings set = new XWPFSettings(); StringBuilder str = new StringBuilder();

//星期

DataTable dtWeek = DAL.R_RecipeMeal.GetRecipeWeek(recpweekId).Tables[0]; DataTable dt = new DataTable();

DataTable dt_weekday = new DataTable(); dt =

CC.DAL.R_RecipeWeekMain().GetRecWeekDetailConnMealType(recpweekId).Tables[0]; dt = RCC(dt);

Hashtable hRQtable = new Hashtable(); string weekstart = \ string weekend = \ string strtitle = \周食谱\ if (dispalyMaterial == 1) strtitle = \带量食谱\ dt_weekday =

CC.DAL.R_RecipeWeekMain().GetRecSevenDay(recpweekId).Tables[0]; if (dt_weekday.Rows.Count > 0) {

//设置 顶部title

weekstart = dt_weekday.Rows[0][\ weekend = dt_weekday.Rows[0][\

new

new

//设置 顶部title

XWPFParagraph p1 = doc.CreateParagraph(); XWPFRun r1 = p1.CreateRun(); r1.SetBold(true);

r1.SetText(dt_weekday.Rows[0][\ r1.SetBold(true);

r1.SetFontFamily(\

p1.SetAlignment(ParagraphAlignment.CENTER); r1.SetFontSize(25);

p1 = doc.CreateParagraph();

p1.SetAlignment(ParagraphAlignment.CENTER); r1.SetFontSize(15); r1 = p1.CreateRun(); r1.SetBold(true);

r1.SetText(\日期:\—\周次:\ r1.SetBold(true);

r1.SetFontFamily(\ r1.SetTextPosition(20); int dayCnt = 0;

//星期对应日期加入hashtable

for (DateTime t = DateTime.Parse(weekstart); t <= DateTime.Parse(weekend); t = t.AddDays(1)) {

if (dayCnt == 7) break;

hRQtable.Add(t.DayOfWeek.ToString(), t.Date.ToString(\ dayCnt = dayCnt + 1; } }

XWPFTable table = null; table = doc.CreateTable();

// table = cteatetemprow(table, dtWeek, dispalyMaterial); table.Width = 1000000; if (dt.Rows.Count > 0) {

//星期head 完毕

//食物与材料不对应 分N次循环各餐 分七次循环个列 XWPFTableRow m_Row; XWPFTableCell cell; CT_Tc cttc; CT_TcPr ctPr; CT_TblWidth wid;

CT_R ctr; CT_RPr ctrpr; CT_Color cor; CT_OnOff b;

CT_HpsMeasure sz;

for (int i = 0; i < dt.Rows.Count; i++) //循环餐 {

m_Row = table.CreateRow();//创建一行

cell = m_Row.GetCell(0);// m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr(); //wid = new CT_TblWidth(); //wid.w = \ //ctPr.tcW = wid;

ctr = cttc.GetPList()[0].AddNewR(); ctrpr = ctr.AddNewRPr();

ctrpr.AddNewRFonts().hint = ST_Hint.eastAsia; cor = new CT_Color(); cor.val = \ ctrpr.color = cor; b = new CT_OnOff(); b.val = true; ctrpr.b = b;

sz = new CT_HpsMeasure(); sz.val = (ulong.Parse(\ ctrpr.sz = sz;

ctPr.vAlign.val = ST_VerticalJc.center;

ctr.AddNewT().Value = \ \餐次\ \

for (int x = 0; x < dtWeek.Rows.Count; x++) //循环列 {

string weekName = NumToChina(Convert.ToInt32(dtWeek.Rows[x][\ cell = m_Row.CreateCell();

\

\

+

// 转化字符串为集合 关键字符(:&)示范(荷包蛋&大米:10;荷包蛋&鸡蛋:30 )循环li

string StrMon = dt.Rows[i][weekName].ToString(); string StrRecipName = null; //菜谱名 string StrTempRecipName = null; string[] arr = StrMon.Split(';');

List mList = new List(); if (StrMon != \ {

string tablefd = \

for (int j = 0; j < arr.Length; j++) {

StrTempRecipName = arr[j].Split('&')[0]; if (StrRecipName != StrTempRecipName) {

if (j == 0)

tablefd += arr[j].Split('&')[0]; else

追加==str.append()

tablefd += \、\ }

StrRecipName = arr[j].Split('&')[0];

//组合 食材+量 集合

mList.Add(arr[j].Split('&')[1]); }

cell.SetText(tablefd); } else {

if (i == dt.Rows.Count - 1)

cell.SetText(\ .\}

//显示材料:量

Hashtable tb = new Hashtable(); if (dispalyMaterial == 1) {

cell = m_Row.CreateCell(); if (mList.Count > 0) {

mList.Sort();

tb = getFoodNameValue(mList); //合并 材料 int tempi = 1;

foreach (DictionaryEntry de in tb) {

if (tb.Count != tempi)

cell.SetText(de.Key + \、\ else

cell.SetText(de.Key + \ tempi = tempi + 1; } }

else {

cell.SetText(\ .\ } } } }

table.RemoveRow(0);

m_Row = table.InsertNewTableRow(0);//创建一行 cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr(); wid = new CT_TblWidth(); wid.w = \ ctPr.tcW = wid;

ctr = cttc.GetPList()[0].AddNewR(); ctrpr = ctr.AddNewRPr();

ctrpr.AddNewRFonts().hint = ST_Hint.eastAsia; cor = new CT_Color(); cor.val = \ ctrpr.color = cor; b = new CT_OnOff(); b.val = true; ctrpr.b = b;

sz = new CT_HpsMeasure(); sz.val = (ulong.Parse(\ ctrpr.sz = sz;

ctr.AddNewT().Value = \ 餐次 \ for (int i = 0; i < dtWeek.Rows.Count; i++) {

string weekName = \ NumToChina(Convert.ToInt32(dtWeek.Rows[i][\ \

\

+

cell = m_Row.CreateCell();//创建一个单元格,创建单元格时就创建了一个CT_P

cttc = cell.GetCTTc(); // w = new CT_TblWidth(); w.w = \ ctPr = cttc.AddNewTcPr(); //ctPr.tcW = w; ctPr.noWrap.val = true;

ctr = cttc.GetPList()[0].AddNewR(); ctrpr = ctr.AddNewRPr(); ctrpr.b = b; ctrpr.sz = sz;

if (dispalyMaterial == 1)

ctPr.gridSpan.val = \合并2列 ctPr.vAlign.val = ST_VerticalJc.both;

ctrpr.AddNewRFonts().hint = ST_Hint.eastAsia;

cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; if

(hRQtable[NumToweek(Convert.ToInt32(dtWeek.Rows[i][\ {

weekName += \

hRQtable[NumToweek(Convert.ToInt32(dtWeek.Rows[i][\ }

ctr.AddNewT().Value = weekName; } }

// table.RemoveRow(1);

DataTable dt_memo = new DataTable();

CC.Model.R_RecipeWeekMain modelrwm = new CC.Model.R_RecipeWeekMain(); modelrwm = new CC.DAL.R_RecipeWeekMain().GetModel(recpweekId);

XWPFParagraph p = doc.CreateParagraph(); XWPFRun r = p.CreateRun(); r.SetBold(true);

r.SetText(\备注信息:\ r.SetBold(true);

r.SetFontFamily(\

p.SetAlignment(ParagraphAlignment.CENTER); r.SetFontSize(10); return doc; }

#endregion

#region //公共函数

private DataTable RCC(DataTable _outDataSource) {

//从DataTable中读取不重复的item行,用来构造新DataTable的列

DataTable distinct_date = _outDataSource.DefaultView.ToTable(true, \

DataTable new_DataTable = new DataTable();

//将名称列添加到新表中

DataColumn new_mealName_col = new DataColumn(); new_mealName_col.ColumnName = \餐次\ new_mealName_col.Caption = \

new_DataTable.Columns.Add(new_mealName_col);

+

DataColumn new_mon_col = new DataColumn(); new_mon_col.ColumnName = \星期一\ new_mon_col.Caption = \

new_DataTable.Columns.Add(new_mon_col);

DataColumn new_tue_col = new DataColumn(); new_tue_col.ColumnName = \星期二\ new_tue_col.Caption = \

new_DataTable.Columns.Add(new_tue_col);

DataColumn new_wed_col = new DataColumn(); new_wed_col.ColumnName = \星期三\ new_wed_col.Caption = \

new_DataTable.Columns.Add(new_wed_col);

DataColumn new_thur_col = new DataColumn(); new_thur_col.ColumnName = \星期四\ new_thur_col.Caption = \

new_DataTable.Columns.Add(new_thur_col);

DataColumn new_fri_col = new DataColumn(); new_fri_col.ColumnName = \星期五\ new_fri_col.Caption = \

new_DataTable.Columns.Add(new_fri_col);

DataColumn new_sat_col = new DataColumn(); new_sat_col.ColumnName = \星期六\ new_sat_col.Caption = \

new_DataTable.Columns.Add(new_sat_col);

DataColumn new_sun_col = new DataColumn();

new_sun_col.ColumnName = \星期天\ new_sun_col.Caption = \

new_DataTable.Columns.Add(new_sun_col); StringBuilder str_sum = new StringBuilder();

//到此新表已经构建完毕,下面开始为新表添加数据*/

//从原DataTable中读出不重复的名称,以名称为关键字来构造新表的行 //聚合各周材料字段 (白菜:20g) 与 菜谱字段 (白菜汤) //需要再次处理拆分 材料 字段 进行 材料量的合并

DataRow[] drs; DataRow new_dr;

foreach (DataRow dr in distinct_date.Rows) {

new_dr = new_DataTable.NewRow();

new_dr[\餐次\ foreach (DataRow _dr in _outDataSource.Rows) {

// drs = _outDataSource.Select(\\

if (new_dr[\餐次\ {

new_dr[\星期一\= new_dr[\星期一\== \? _dr[\星期一\星期一\星期一\new_dr[\星期一\星期一\

new_dr[\星期二\= new_dr[\星期二\== \? _dr[\星期二\星期二\星期二\new_dr[\星期二\星期二\

new_dr[\星期三\= new_dr[\星期三\== \? _dr[\星期三\星期三\星期三\new_dr[\星期三\星期三\

new_dr[\星期四\= new_dr[\星期四\== \? _dr[\星期四\星期四\星期四\new_dr[\星期四\星期四\

new_dr[\星期五\= new_dr[\星期五\== \? _dr[\星期五\星期五\星期五\new_dr[\星期五\星期五\

new_dr[\星期六\= new_dr[\星期六\== \? _dr[\星期六\星期六\星期六\new_dr[\星期六\星期六\

new_dr[\星期天\= new_dr[\星期天\== \? _dr[\星期天\星期天\星期天\new_dr[\星期天\星期天\

} }

new_DataTable.Rows.Add(new_dr);

}

return new_DataTable; }

private Hashtable getFoodNameValue(List mList) {

Hashtable tb = new Hashtable(); string name = \

string tempname = \ for (int j = 0; j < mList.Count; j++) {

name = mList[j].Split(':')[0]; if (name != tempname) {

tb.Add(name, mList[j].Split(':')[1]);

tempvalue = double.Parse(mList[j].Split(':')[1].Trim()); } else {

tb.Remove(name);

tempvalue = tempvalue + double.Parse(mList[j].Split(':')[1].Trim()); tb.Add(name, tempvalue); }

tempname = name;

}

return tb; }

protected string NumToweek(int week) {

switch (week) {

case 1: return \ case 2: return \ case 3: return \ case 4: return \ case 5: return \ case 6: return \ case 7: return \ default: return \ } }

#endregion

#region //营养分析报告

public XWPFDocument tbGetReport(int RecipeWeekId, XWPFDocument mydoc) {

ViewState[\

StringBuilder str = new StringBuilder(); string strdate = \ string eattype = \ string schoolname = \

//0.绑定头部信息

XWPFDocument doc = mydoc; CC.Model.R_RecipeWeekMain model BLL.R_RecipeWeekMain().GetModel(RecipeWeekId);

= new

eattype = DAL.R_RecipeChildCnt.GetRecipeMealStr(RecipeWeekId);//就餐方式 if (model != null) {

string start = model.WeekStart.ToLongDateString(); string end = model.WeekEnd.ToLongDateString(); strdate = start + \

schoolname = new CC.DAL.T_School().GetModel(model.SchoolId).Name; }

XWPFParagraph grap = doc.CreateParagraph(); XWPFRun run = grap.CreateRun(); run.SetFontSize(16);

grap.SetAlignment(ParagraphAlignment.CENTER);

run.SetText(\周食谱营养分析报告(每人每日在园量)\ run.SetBold(true);

run.SetFontFamily(\ grap = doc.CreateParagraph(); run = grap.CreateRun(); run.SetFontSize(12);

grap.SetAlignment(ParagraphAlignment.CENTER); run.SetFontFamily(\

run.SetText(schoolname + \ \ grap = doc.CreateParagraph();

XWPFRun canshirun = grap.CreateRun(); canshirun.SetFontSize(12);

grap.SetAlignment(ParagraphAlignment.CENTER); canshirun.SetFontFamily(\ canshirun.SetText(\餐式:\

doc = GetReportAnyaly1(RecipeWeekId, doc);//.Replace(\border='0' class='table_food mt10'\\border='1' \border='0' class='table_food mt10'\

\

doc.CreateParagraph();//换行 // run = grap.CreateRun();

doc = GetReportAnyaly2(Int32.Parse(ViewState[\ doc.CreateParagraph(); run = grap.CreateRun();

doc = GetReportAnyaly3(Int32.Parse(ViewState[\ doc.CreateParagraph(); run = grap.CreateRun();

doc = GetReportAnyaly4(Int32.Parse(ViewState[\ doc.CreateParagraph(); run = grap.CreateRun();

XWPFParagraph grapAdvice = doc.CreateParagraph(); XWPFRun graprun = grapAdvice.CreateRun();

graprun.SetText(\营养分析建议 \ graprun.SetBold(true);

graprun.SetFontFamily(\

grapAdvice.SetAlignment(ParagraphAlignment.LEFT); XWPFTable table = doc.CreateTable();

XWPFTableRow m_Row = table.CreateRow();//创建一行 m_Row.GetCell(0).SetText(GetProposal()); table.RemoveRow(0); double sumScore

HWF.HW_StrToDouble(HWF.HW_StrToDouble(ViewState[\ if (sumScore < 0) {

sumScore = 0; }

=

canshirun.SetText(\ 总分\ return doc; }

//推荐量计算报告

private XWPFDocument GetReportAnyaly1(int RecipeWeekId, XWPFDocument doc) {

DataTable dtRec = DAL.R_NutritionRecommend.GetNutritionRecommend(RecipeWeekId).Tables[0]; DataTable dtWeek = DAL.R_NutritionRecommend.GetNutritionRecipeWeek(RecipeWeekId).Tables[0]; decimal Score = HWF.HW_StrToDecimal(DAL.R_RptScoreSet.GetList().Tables[0].Rows[0][\//分值

if (dtRec.Rows.Count == 1 && dtWeek.Rows.Count == 1)

{

XWPFParagraph grap = doc.CreateParagraph(); XWPFRun run = grap.CreateRun();

run.SetText(\各营养素的摄入量与推荐营养素摄入量比较(人均)\ run.SetBold(true);

run.SetFontFamily(\

grap.SetAlignment(ParagraphAlignment.LEFT); XWPFTable table = doc.CreateTable();

XWPFTableRow m_Row = table.CreateRow();//创建一行 //m_Row.SetRepeatHeader(true); m_Row.GetCell(0).SetText(\营养素\ XWPFTableCell cell = m_Row.CreateCell(); cell.SetText(\推荐量\ cell = m_Row.CreateCell(); cell.SetText(\摄入量\ cell = m_Row.CreateCell();

cell.SetText(\摄入量占推荐量比例\ cell = m_Row.CreateCell(); cell.SetText(\实际百分比\ cell = m_Row.CreateCell(); cell.SetText(\评价\

cell = m_Row.CreateCell();

cell.SetText(\扣分\ #region //建立结果表

DataTable dtscore = new DataTable(); dtscore.Columns.Add(\ dtscore.Columns.Add(\ dtscore.Columns.Add(\ dtscore.Columns.Add(\ string ItemName = string.Empty; string Field = string.Empty; #endregion

for (int i = 0; i < 8; i++) {

#region //获取对应字段值 switch (i) {

case 2:

ItemName = \钙\ Field = \

break; case 3:

ItemName = \锌\ Field = \ break; case 4:

ItemName = \维生素A\ Field = \ break; case 5:

ItemName = \硫胺素B1\ Field = \ break; case 6:

ItemName = \尼克酸\ Field = \ break; case 7:

ItemName = \抗坏血酸C\ Field = \ break; }

#endregion //实际百分比

decimal pro = HWF.HW_StrToDecimal(dtWeek.Rows[0][i].ToString()) HWF.HW_StrToDecimal(dtRec.Rows[0][i].ToString()); //摄入量占推荐量比例(区间)

DataTable dt = DAL.R_NutrientsSet.GetNutritionSet(pro, i).Tables[0]; string prointerval = \ string result = \ decimal LowValue HWF.HW_StrToDecimal(dt.Rows[0][\开始值 decimal ExcessValue HWF.HW_StrToDecimal(dt.Rows[0][\结束值 if (dt.Rows.Count > 0) {

result = dt.Rows[0][\

prointerval = dt.Rows[0][\+ \dt.Rows[0][\ }

ViewState[\

m_Row = table.CreateRow();//创建一行

m_Row.GetCell(0).SetText(dtRec.Columns[i].ToString()); cell = m_Row.CreateCell();

/

= =

+

if (dtScore.Rows.Count > 0) {

string addStr1 = string.Empty; string addStr2 = string.Empty; string cutStr = string.Empty; string addFood1 = string.Empty; string addFood2 = string.Empty; string cutFood = string.Empty; string FoodIds = string.Empty;

for (int i = 0; i < dtScore.Rows.Count; i++) {

string ItemName = HWF.HW_ObjectToStr(dtScore.Rows[i][0]); string Result = HWF.HW_ObjectToStr(dtScore.Rows[i][1]); string Field = HWF.HW_ObjectToStr(dtScore.Rows[i][3]);

if (Result == \不足\ {

DataTable dt = DAL.R_Food.GetFoodName(Field, FoodIds).Tables[0]; if (dt.Rows.Count > 0) {

addStr1 += ItemName + \、\

addFood1 += dt.Rows[0][\、\

FoodIds += FoodIds == \? dt.Rows[0][\: \+ dt.Rows[0][\ } }

else if (Result == \严重不足\ {

DataTable dt = DAL.R_Food.GetFoodName(Field, FoodIds).Tables[0]; if (dt.Rows.Count > 0) {

addStr2 += ItemName + \、\

addFood2 += dt.Rows[0][\、\

FoodIds += FoodIds == \? dt.Rows[0][\: \+ dt.Rows[0][\ } } else {

DataTable dt = DAL.R_Food.GetFoodName(Field, HWF.HW_StrToInt32(ViewState[\ if (dt.Rows.Count > 0)

{

cutStr += ItemName + \、\

cutFood += dt.Rows[0][\、\

FoodIds += FoodIds == \? dt.Rows[0][\: \+ dt.Rows[0][\ } }

}

if (addStr1 != \ {

addStr1 = addStr1.Substring(0, addStr1.Length - 1); addStr2 = addStr2.Substring(0, addStr2.Length - 1);

addFood1 = addFood1.Substring(0, addFood1.Length - 1); addFood2 = addFood2.Substring(0, addFood2.Length - 1);

sbStr.AppendFormat(\但{0}不足,{1}严重不足,建议增加{2}、{3}等食材。\addStr1, addStr2, addFood1, addFood2); } else {

if (addStr1 != \ {

addStr1 = addStr1.Substring(0, addStr1.Length - 1);

addFood1 = addFood1.Substring(0, addFood1.Length - 1);

sbStr.AppendFormat(\但{0}不足,建议增加{1}等食材。\addStr1, addFood1);

}

if (addStr2 != \ {

addStr2 = addStr2.Substring(0, addStr2.Length - 1);

addFood2 = addFood2.Substring(0, addFood2.Length - 1);

sbStr.AppendFormat(\但{0}严重不足,建议增加{1}等食材。\addFood2);

} }

if (cutStr != \ {

cutStr = cutStr.Substring(0, cutStr.Length - 1);

cutFood = cutFood.Substring(0, cutFood.Length - 1); if (addStr1 == \ {

sbStr.AppendFormat(\但{0}过剩,建议减少{1}等食材。\cutStr,

cutFood);

} else {

sbStr.AppendFormat(\过剩,建议减少{1}等食材。\ } } }

#endregion

#region//优质蛋白质 if (GoodProtein == \合理\ {

sbStr.Append(\另:蛋白质中,优质蛋白质(豆类、谷类)比例合理。\ } else {

sbStr.Append(\另:蛋白质中,优质蛋白质(豆类、谷类)比例偏低,其它蛋白质比例偏高。\ }

#endregion

#region //植物脂肪

sbStr.AppendFormat(\动物脂肪在脂肪中比例{0}\ #endregion

return sbStr.ToString(); }

#endregion

#endregion

#region//数字转换成中文数字 protected string NumToChina(int i) {

switch (i) {

case 1: return \一\ case 2: return \二\ case 3: return \三\ case 4: return \四\ case 5: return \五\ case 6: return \六\ case 7: return \七\ case 8: return \八\

case 9: return \九\ case 10: return \十\ case 11: return \十一\ case 12: return \十二\ case 13: return \十三\ case 14: return \十四\ case 15: return \十五\ case 16: return \十六\ case 17: return \十七\ case 18: return \十八\ case 19: return \十九\ case 20: return \二十\ case 21: return \二十一\ case 22: return \二十二\ case 23: return \二十三\ case 24: return \二十四\ case 25: return \二十五\ case 26: return \二十六\ case 27: return \二十七\ case 28: return \二十八\ case 29: return \二十九\ case 30: return \三十\ case 31: return \三十一\ case 32: return \三十二\ case 33: return \三十三\ case 34: return \三十四\ case 35: return \三十五\ case 36: return \三十六\ case 37: return \三十七\ case 38: return \三十八\ case 39: return \三十九\ case 40: return \四十\ case 41: return \四十一\ case 42: return \四十二\ case 43: return \四十三\ case 44: return \四十四\ case 45: return \四十五\ case 46: return \四十六\ case 47: return \四十七\ case 48: return \四十八\ case 49: return \四十九\ case 50: return \五十\ default: return \ }

}

#endregion }

CT_Row m_NewRow = new CT_Row();

XWPFTableRow m_Row = new XWPFTableRow(m_NewRow, table); table.AddRow(m_Row);

XWPFTableCell cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr(); ctPr.gridSpan.val = \ //合并2列

cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.left; cttc.GetPList()[0].AddNewR().AddNewT().Value = \ 营养素 \ cell = m_Row.CreateCell(); cell.SetText(\进餐量(g)\ cell = m_Row.CreateCell();

cell.SetText(\占蛋白质总量推荐百分比\ cell = m_Row.CreateCell();

cell.SetText(\实际摄入占蛋白质总量百分比\ cell = m_Row.CreateCell();

cell.SetText(\评价\

cell = m_Row.CreateCell(); cell.SetText(\扣分\

decimal per = HWF.HW_StrToDecimal(dtper.Rows[0][\ DataTable dt = DAL.R_NutrientsSet.GetHeatPer(per, 7).Tables[0]; string prointerval = \ string result = \ if (dt.Rows.Count > 0) {

prointerval = \ result = dt.Rows[0][\ }

ViewState[\ decimal prointerval2 = 100

HWF.HW_StrToDecimal(dt.Rows[0][\非优质蛋白质推荐百分比 decimal per2 = 100 - per;//非优质实际占比 string result2 = string.Empty;//非优质评价 if (result == \偏低\ {

result2 = \偏高\ }

else if (result == \偏高\ {

result2 = \偏低\ } else {

-

result2 = \合理\ }

//计算优质蛋白质得分 if (result == \偏低\ {

double score = HWF.HW_StrToDouble((((HWF.HW_StrToDecimal(dt.Rows[0][\- per) / HWF.HW_StrToDecimal(dt.Rows[0][\ if (score == 0) {

score = 0.01; }

double SumScore = HWF.HW_StrToDouble(ViewState[\- score;

ViewState[\ goodscore = score;

} else {

goodscore = 0; }

if (result2 == \偏高\ {

double score = HWF.HW_StrToDouble((((per2 - prointerval2) / prointerval2) * Score).ToString(\

if (score == 0) {

score = 0.01; }

double SumScore = HWF.HW_StrToDouble(ViewState[\- score;

ViewState[\ ungoodscore = score;

} else {

ungoodscore = 0; }

// m_Row = table.CreateRow();//创建一行 此方法创建的行不支持合并行操作 m_NewRow = new CT_Row();

m_Row = new XWPFTableRow(m_NewRow, table);

table.AddRow(m_Row); cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行 ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.left; cttc.GetPList()[0].AddNewR().AddNewT().Value = \优质蛋白质\ m_Row.CreateCell().SetText(\谷类\

m_Row.CreateCell().SetText(dtWeight.Rows[0][0].ToString());//进餐量 cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行 ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.left;

cttc.GetPList()[0].AddNewR().AddNewT().Value = prointerval+\ 占蛋白质总量推荐百分比

cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行 ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.left;

cttc.GetPList()[0].AddNewR().AddNewT().Value = per.ToString()+\ 实际摄入占蛋白质总量百分比

cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行 ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.left;

cttc.GetPList()[0].AddNewR().AddNewT().Value = result; //评价 cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行 ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.left;

cttc.GetPList()[0].AddNewR().AddNewT().Value = goodscore.ToString(); //数据库中增加(优质蛋白质+蔬菜水果+肉类+其他)的评价 //谷类、豆类

m_NewRow = new CT_Row();

m_Row = new XWPFTableRow(m_NewRow, table);

.\ // .\////扣分 table.AddRow(m_Row); cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行

m_Row.CreateCell().SetText(\豆类\

m_Row.CreateCell().SetText(dtWeight.Rows[0][1].ToString());//进餐量 cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行 cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行 cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行 cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行

//表未增加行,合并2列,合并2行 //1行

m_NewRow = new CT_Row();

m_Row = new XWPFTableRow(m_NewRow, table); table.AddRow(m_Row); cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行 ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.left;

cttc.GetPList()[0].AddNewR().AddNewT().Value = \非优质蛋白质\ m_Row.CreateCell().SetText(\蔬菜水果\

m_Row.CreateCell().SetText(dtWeight.Rows[0][2].ToString());//进餐量

//m_Row.CreateCell().SetText(prointerval2.ToString()); //占蛋白质总量推荐百分比

cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行 ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.left;

cttc.GetPList()[0].AddNewR().AddNewT().Value = \+ \ .\占蛋白质总量推荐百分比

cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行 ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.left;

cttc.GetPList()[0].AddNewR().AddNewT().Value = per2.ToString()+\ .\实际摄入占蛋白质总量百分比

cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行 ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.left;

cttc.GetPList()[0].AddNewR().AddNewT().Value =result2.ToString(); //评价 cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行 ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中 cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.left;

cttc.GetPList()[0].AddNewR().AddNewT().Value = ungoodscore.ToString();//扣分

string[] arryitems = { \肉类\鱼类\其他\

// string[] arryitemField = { \ for (int i = 0; i < 3; i++) {

m_NewRow = new CT_Row();

m_Row = new XWPFTableRow(m_NewRow, table); table.AddRow(m_Row); cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行 m_Row.CreateCell().SetText(arryitems[i]);

m_Row.CreateCell().SetText(dtWeight.Rows[0][i+3].ToString());//dtper.Rows[0][arryitemField[i]].ToString()

cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr(); //// ctPr.gridSpan.val = \

ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行 cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行 cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行

cell = m_Row.CreateCell(); cttc = cell.GetCTTc();

ctPr = cttc.AddNewTcPr();

ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行 }

table.RemoveRow(0); }

return doc;

}

//动物脂肪比率

private XWPFDocument GetReportAnyaly4(int RecipeWeekId, XWPFDocument doc) {

double animalscore = 0;

DataTable dtper = DAL.R_NutrientsSet.GetPer(RecipeWeekId).Tables[0]; string prointerval = \ string result = \ decimal per = 0;

if (dtper.Rows.Count > 0) {

StringBuilder str = new StringBuilder();

per = HWF.HW_StrToDecimal(dtper.Rows[0][\ DataTable dt = DAL.R_NutrientsSet.GetHeatPer(per, 8).Tables[0];

if (dt.Rows.Count > 0) {

prointerval = dt.Rows[0][\+ \+ dt.Rows[0][\

result = dt.Rows[0][\ }

ViewState[\ decimal StartValue = HWF.HW_StrToDecimal(dt.Rows[0][\开始值

decimal EndValue = HWF.HW_StrToDecimal(dt.Rows[0][\结束值

decimal Score = HWF.HW_StrToDecimal(DAL.R_RptScoreSet.GetList().Tables[0].Rows[3][\//分值

if (result == \偏高\ {

double score = HWF.HW_StrToDouble((((per - EndValue) / EndValue )* Score).ToString(\

if (score == 0) {

score = 0.01; }

double SumScore = HWF.HW_StrToDouble(ViewState[\- score;

ViewState[\ animalscore = score;

}

else if (result == \偏低\ {

double score = HWF.HW_StrToDouble((((StartValue - per) / StartValue) * Score).ToString(\

if (score == 0) {

score = 0.01; }

double SumScore = HWF.HW_StrToDouble(ViewState[\- score;

ViewState[\ animalscore = score;

} else {

animalscore = 0; }

}

XWPFParagraph grap = doc.CreateParagraph(); XWPFRun run = grap.CreateRun(); run.SetText(\动物脂肪来源分布 \ run.SetBold(true);

run.SetFontFamily(\

grap.SetAlignment(ParagraphAlignment.LEFT); XWPFTable table = doc.CreateTable();

XWPFTableRow m_Row = table.CreateRow();//创建一行

m_Row.GetCell(0).SetText(\营养素\ XWPFTableCell cell = m_Row.CreateCell(); cell.SetText(\占脂肪总摄入量百分比\ cell = m_Row.CreateCell();

cell.SetText(\实际摄入占脂肪总摄入量百分比\ cell = m_Row.CreateCell(); cell.SetText(\评价\

cell = m_Row.CreateCell(); cell.SetText(\扣分\

m_Row = table.CreateRow();//创建一行 m_Row.GetCell(0).SetText(\动物脂肪\ cell = m_Row.CreateCell(); cell.SetText(prointerval); cell = m_Row.CreateCell(); cell.SetText(per.ToString()); cell = m_Row.CreateCell(); cell.SetText(result);

cell = m_Row.CreateCell();

cell.SetText(animalscore.ToString() + \ table.RemoveRow(0);

return doc;

}

#region 报表5建议 //获取评价结果

public string GetProposal() {

#region //获取评价结果 //热量来源占比结果

.\ string Heat1 = HWF.HW_ObjectToStr(ViewState[\ string Heat2 = HWF.HW_ObjectToStr(ViewState[\ string Heat3 = HWF.HW_ObjectToStr(ViewState[\ //八大营养素结果

string Item1 = HWF.HW_ObjectToStr(ViewState[\ DataTable dtScore = (DataTable)ViewState[\

//优质蛋白质占比结果

string GoodProtein = HWF.HW_ObjectToStr(ViewState[\

//植物脂肪结果

string AnimalFat = HWF.HW_ObjectToStr(ViewState[\ #endregion

StringBuilder sbStr = new StringBuilder();

sbStr.AppendFormat(\从热量摄入量与推荐量比较分析:热量总绝对量{0}。\ //热量总绝对量合理 if (Item1 == \合理\ {

sbStr.AppendFormat(\从热量的营养素来源比例分析:蛋白质占比{0},脂肪占比{1},碳水化合物占比{2}。\ string addStr = string.Empty; string cutStr = string.Empty; #region //判断热量来源比例

if (Heat1 == \偏高\偏高\ {

cutStr = \肉、鱼类、蛋类、乳制品、\ }

else if (Heat1 == \偏低\偏低\ {

addStr = \肉、鱼类、蛋类、乳制品、\

} else {

if (Heat1 == \偏高\蛋白质多 {

cutStr += \鱼类、\

}

else if (Heat1 == \偏低\蛋白质少 {

addStr += \鱼类、\ }

if (Heat2 == \偏高\脂肪多 {

cutStr += \乳制品类、\

}

else if (Heat2 == \偏低\脂肪少 {

addStr += \乳制品类、\ }

}

if (Heat3 == \偏高\ {

cutStr += \蔬菜类、\ }

else if (Heat3 == \偏低\ {

addStr += \鲜果、蔬菜类、\ }

if (addStr != \ {

sbStr.Append(\建议适当\ if (addStr != \ {

addStr = addStr.Substring(0, addStr.Length - 1); sbStr.AppendFormat(\增加{0}\ }

if (cutStr != \ {

cutStr = cutStr.Substring(0, cutStr.Length - 1); if (addStr != \ {

sbStr.AppendFormat(\,减少{0}\ } else {

sbStr.AppendFormat(\减少{0}\ } }

sbStr.Append(\摄入量。\ }

#endregion }

#region //其它元素判断

本文来源:https://www.bwwdw.com/article/e2vd.html

Top