C\#빅 데이터 내 보 내기 워드 의 가사 오류 처리 방법
일반적인 워드 표를 쓰 는 방법:
private void LoadSectionWord()
{
//
string filePath = Tools.CreateWordFileDir() + Utils.GetTimeString() + ".doc";
// word
sectionWordTools.ByteConvertWord(sectionWordTools.WordContentByTemplateIDAndTemplateTitle(templateId, sectionTitle), filePath);
try
{
//wdc winWordControl
wdC.LoadDocument(filePath);
Microsoft.Office.Interop.Word.Document wd = (Microsoft.Office.Interop.Word.Document)wdC.document;
Microsoft.Office.Interop.Word.Application wa = wd.Application;//
// Word
if (dicList.Count > 0)
{
dicList = dicList.OrderBy(d => d.Key.AnalyteID).ToDictionary(i => i.Key, ii => ii.Value);
sectionWordTools.GotoBookMark(wa, "RepeatAnalysisResult");
wa.Selection.Copy();// table
sectionWordTools.WordReplace("special matrix", wdg.Species.ToLower().Trim() + " " + wdg.Matrix.ToLower().Trim(), true, wd);
string analyteTitles = string.Empty;
int index = 0;
#region Replace Title
foreach (KeyValuePair<AnalyteReNameEntity, DataTable> d in dicList)
{
AnalyteReNameEntity key = d.Key;
if (dicList.Count > 2)
{
if (index.Equals(dicList.Count - 2))
{
analyteTitles += key.NewAnalyteName + " and ";
}
else
{
analyteTitles += key.NewAnalyteName + " , ";
}
}
else if (dicList.Count == 2)
{
analyteTitles += key.NewAnalyteName + " and ";
}
else
{
analyteTitles += key.NewAnalyteName;
}
index++;
}
analyteTitles = analyteTitles.Trim().TrimEnd('d').TrimEnd('n').TrimEnd('a').Trim().Trim(',');
sectionWordTools.WordReplace("for Abc000", "for " + analyteTitles, true, wd);
#endregion
int wordTableCount = 0;
foreach (KeyValuePair<AnalyteReNameEntity, DataTable> d in dicList)
{
AnalyteReNameEntity key = d.Key;
DataView dv = d.Value.DefaultView;
dv.Sort = "Custom ID";
DataTable dt = dv.ToTable();
#region dt
if (dt.Columns["analyteid"] != null)
{
dt.Columns.Remove("analyteid");
} if (dt.Columns["id"] != null)
{
dt.Columns.Remove("id");
}
if (dt.Columns["reportid"] != null)
{
dt.Columns.Remove("reportid");
}
if (dt.Columns["studyid"] != null)
{
dt.Columns.Remove("studyid");
}
if (dt.Columns["analyteid"] != null)
{
dt.Columns.Remove("analyteid");
}
#endregion
// WordTable
Microsoft.Office.Interop.Word.Table tb = wd.Tables[wd.Tables.Count];
#region
if (dt.Rows.Count > 0)
{
object beforerow = tb.Rows[2];
//
for (int i = 1; i <= dt.Columns.Count; i++)
{
tb.Cell(1, i).Range.Text = dt.Columns[i - 1].ColumnName;
}
for (int k = 1; k <= dt.Rows.Count; k++)
{
// 2 ,
if (k <= dt.Rows.Count - 2)
{
tb.Rows.Add(ref beforerow);
}
for (int i = 1; i <= dt.Columns.Count; i++)
{
tb.Cell(k + 1, i).Range.Text = dt.Rows[k - 1][dt.Columns[i - 1].ColumnName].ToString();
}
}
}
#endregion
sectionWordTools.WordReplace("Abc000", key.NewAnalyteName, true, wd);
#region
string notStr = GetCurrentReassayReason(key.AnalyteID);
//notStr = "Reasons for Reassay:\r1). Confirmation Assay\r2). ALQ\rReasons for Reported Conc.:\r1). The only valid result is reported.\r20. Reassay results selected according to procedure defined in study protocol";
sectionWordTools.WordReplace("Repeat analysis Tipis", notStr, true, wd);
#endregion
//
//tb.AutoFitBehavior(Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitContent);
//
//tb.AutoFitBehavior(Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitWindow);
if (wordTableCount < dicList.Count - 1)
{
// wa.Selection.TypeParagraph();//
wd.Paragraphs.Last.Range.Select();
wa.Selection.Paste();
}
wordTableCount++;
#region
object lefttopstr = tb.Cell(2, 1).Range.Start;
object leftbottomend = tb.Cell(tb.Rows.Count, tb.Columns.Count).Range.End;
wd.Range(ref lefttopstr, ref leftbottomend).Select();
sectionWordTools.AddBorderNoneLineStyle(wa, false, false, true, true, true, true, true, true);
#endregion
}
}
}
catch (Exception ex)
{
Tools.RecordErrorList(ex.Message, ex);
}
}
위의 코드 는 winwordControl 컨트롤 을 통 해 워드 템 플 릿 을 불 러 옵 니 다.한 줄 한 줄 워드 표 에 데 이 터 를 기록 합 니 다.새로운 표 는 책 갈 피 를 통 해 복사 한 후에 붙 여 넣 은 다음 에 한 줄 한 줄 씩 기록 합 니 다.데이터 양 이 500 줄 이내 일 때 속 도 는 받 아들 일 수 있 습 니 다.데이터 양 이 커지 면 느 립 니 다.개 선 된 코드 는 주로 페이지 를 나 누 는 사상 을 사 용 했 습 니 다.집합 이나 datatable 을 페이지 별로 나 누고 페이지 당 50 줄 의 데 이 터 를 처리 한 후에 임시 파일 에 저장 하고 워드 자원 을 방출 한 다음 임시 파일 을 열 었 습 니 다.이 어 지난번 기록 위치 에 계속 기록 합 니 다.워드 자원 을 방출 하 는 것 은 데 이 터 를 너무 많이 쓰 는 가짜 사망 신고 의 문 제 를 해결 하기 위해 서 입 니 다.워드 를 처리 하 는 친구 에 게 도움 이 되 었 으 면 좋 겠 습 니 다.
private void LoadSectionWord()
{
string filePath = Tools.CreateWordFileDir() + Utils.GetTimeString() + ".doc";
//
sectionWordTools.ByteConvertWord(sectionWordTools.WordContentByTemplateIDAndTemplateTitle(templateId, sectionTitle), filePath);
try
{
wdC.LoadDocument(filePath);
Microsoft.Office.Interop.Word.Document wd = (Microsoft.Office.Interop.Word.Document)wdC.document;
Microsoft.Office.Interop.Word.Application wa = wd.Application;
sectionWordTools.GotoBookMark(wa, "TimeConcentrationData");
wa.Selection.Copy();// table
string assayLLOQ = ComputerOfPostText.ComputerPostText.GetStudyAssayLLOQResults(this.studyId);
sectionWordTools.WordReplace("0.0 ng/mL for Abc000", assayLLOQ, true, wd);
// , , ,
List<string> groupList = commonBLL.GetAnalyteGroupList(this.reportId, COMMON_TYPE);
List<List<AnalyteReNameEntity>> analyteGroupList = new List<List<AnalyteReNameEntity>>();
#region Table
foreach (string group in groupList)
{
List<AnalyteReNameEntity> currentGroupList = commonBLL.GetAnalyteReNameList(this.reportId, this.studyId, group);
if (currentGroupList.Count > 0)
{
analyteGroupList.Add(currentGroupList);
}
}
#endregion
if (analyteGroupList.Count > 0)
{
int wordTableCount = 0;
foreach (List<AnalyteReNameEntity> currentGroupList in analyteGroupList)
{
// WordTable
Microsoft.Office.Interop.Word.Table tb = wd.Tables[wd.Tables.Count];
string key = globalBLL.AnalyteAppendString(currentGroupList);
// word
DataTable dt = new DataTable();
#region word
foreach (ReportColumnsEntity rc in rceList)
{
dt.Columns.Add(rc.ReportText, typeof(string));
}
foreach (AnalyteReNameEntity ar in currentGroupList)
{
dt.Columns.Add(ar.NewAnalyteName + " Concentration (ng/mL)", typeof(string));
}
dt.Columns.Add("Comments", typeof(string));
#endregion
#region Word DataTable
for (int i = 0; i < currentGroupList.Count; i++)
{
DataRow[] rows = dtResult.Select(string.Format(" analyteid={0}", currentGroupList[i].AnalyteID));
if (i == 0)
{
#region i=0,
for (int k = 0; k < rows.Length; k++)
{
string conc = Utils.EffectiveNumber(rows[k]["concentration"].ToString(), "3");
DataRow dr = dt.NewRow();
foreach (ReportColumnsEntity rc in rceList)
{
if (rc.WatsonText.Equals("concentration"))
{
dr[rc.ReportText] = Utils.EffectiveNumber(rows[k][rc.WatsonText].ToString(), "3");
}
else
{
dr[rc.ReportText] = rows[k][rc.WatsonText].ToString();
}
}
dr["Comments"] = "NA";
dr[currentGroupList[i].NewAnalyteName + " Concentration (ng/mL)"] = conc;
dt.Rows.Add(dr);
}
#endregion
}
else
{
for (int k = 0; k < rows.Length; k++)
{
string conc = Utils.EffectiveNumber(rows[k]["concentration"].ToString(), "3");
//
dt.Rows[k][currentGroupList[i].NewAnalyteName + " Concentration (ng/mL)"] = conc;
}
}
}
DataTable dtTemp = dt.Copy();
DataView dv = dt.DefaultView;
dv.Sort = "Subject ID";
dtTemp = dv.ToTable();
dt = dtTemp;
#endregion
#region
if (dt.Rows.Count > 0)
{
#region
object wordColumnsCount = dt.Columns.Count;
object rownum = 1;
for (int k = 0; k < 5; k++)
{
for (int i = 1; i < tb.Columns.Count; i++)
{
tb.Cell(k, i).Range.Text = " ";
}
}
// , Selection.Cells.Merge
for (int i = 1; i <= 4; i++)
{
object start = tb.Cell(i, 1).Range.Start;
object end = tb.Cell(i, 6).Range.End;
wd.Range(ref start, ref end).Select();
wa.Selection.Cells.Merge();
}
for (int i = 1; i < 5; i++)
{
tb.Cell(i, 1).Split(ref rownum, ref wordColumnsCount);
}
#endregion
//
wa.ScreenUpdating = false;
#region
//
for (int i = 1; i <= dt.Columns.Count; i++)
{
tb.Cell(1, i).Range.Text = dt.Columns[i - 1].ColumnName;
}
#endregion
#region
#region
object missing = System.Reflection.Missing.Value;
object saveOption = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges; // normal.dot
object beforerow = tb.Rows[3];
int dtRowCounts = dt.Rows.Count;//10;//
int columnCount = dt.Columns.Count;
int pageSize = 50;
//
int totalPages = DataUtils.GetPageCounts(dtRowCounts, pageSize);
for (int index = 1; index <= totalPages; index++)
{
tb = wd.Tables[wd.Tables.Count];
beforerow = tb.Rows[3 + (index - 1) * pageSize];
DataTable pageDt = DataUtils.GetPagedTable(dt, index, pageSize);
#region
for (int k = 2; k < pageDt.Rows.Count + 2; k++)
{
// , 3
if (index.Equals(totalPages))
{
if (k < pageDt.Rows.Count - 3)
{
tb.Rows.Add(ref beforerow);
}
}
else
{
tb.Rows.Add(ref beforerow);
}
// ,
for (int i = 1; i <= pageDt.Columns.Count; i++)
{
tb.Cell(k + (index - 1) * pageSize, i).Range.Text = pageDt.Rows[k - 2][pageDt.Columns[i - 1].ColumnName].ToString();
}
}
#endregion
// PageSize ,
object savePath = filePath;
wd.SaveAs(ref savePath, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
wa.ScreenUpdating = true;
wd = null;
wa = null;
Thread.Sleep(10);
//
wdC.LoadDocument(filePath);
wd = (Microsoft.Office.Interop.Word.Document)wdC.document;
wa = wd.Application;
wa.ScreenUpdating = false;
}
#endregion
#endregion
//
//wa.ActiveDocument.ActiveWindow.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMaximize;
wa.ScreenUpdating = true;
}
#endregion
#region Paste Table
sectionWordTools.WordReplace("Abc000", key, true, wd);
tb = wd.Tables[wd.Tables.Count];
//
tb.AutoFitBehavior(Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitContent);
//
tb.AutoFitBehavior(Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitWindow);
if (wordTableCount < analyteGroupList.Count - 1)
{
// wa.Selection.TypeParagraph();//
wd.Paragraphs.Last.Range.Select();
wa.Selection.Paste();
}
wordTableCount++;
#endregion
}
}
}
catch (Exception ex)
{
Tools.RecordErrorList(ex.Message, ex);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
spark 의 2: 원리 소개Google Map/Reduce 를 바탕 으로 이 루어 진 Hadoop 은 개발 자 에 게 map, reduce 원 어 를 제공 하여 병렬 일괄 처리 프로그램 을 매우 간단 하고 아름 답 게 만 들 었 습 니 다.S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.