【发布时间】:2019-02-06 04:15:17
【问题描述】:
我需要将日期、标题和描述导出到 excel 文件,现在我面临两个导出 excel 文件的问题。
一个特殊字符,例如'," 另一个字符变成‘ & 等等......
所有这些问题都与描述列有关,该列以 HTML 格式存储文本。下面是各种格式的文本示例
实际文字 “高尔夫赛季开幕”标志着 at Golf Club 的正式开幕,赛季将于 2018 年 3 月 10 日开始。
存储在数据库 MS SQL SERVER 中的文本
“高尔夫赛季开幕”标志着 at Golf Club & Season 于 2018 年 3 月 10 日和 2018 年 3 月 10 日和赛季正式开幕。
文本导出到 Excel “高尔夫赛季开幕”标志着高尔夫俱乐部和赛季的正式开幕,将于 2018 年 3 月 10 日和 2018 年开始。
我正在使用以下代码创建 excel 文件,但我面临上述问题。
如何在不解码文本的情况下存储文本是 excel 应该以文本格式存储并且所有特殊字符都可以正确显示而没有任何问题
var wb = new XLWorkbook();
var ws = wb.Worksheets.Add("Calendar");
DataTable dt = ds.Tables[0];
var rowIndex = 2; // 1 = header row
foreach (DataRow row in dt.Rows)
{
ws.Cell("A" + rowIndex).Value = row["Year"];
ws.Cell("B" + rowIndex).Value = row["Title"];
string noHTML = Regex.Replace(row["Description"].ToString(), @"<[^>]+>| ", "").Trim();
string noHTMLNormalised = Regex.Replace(noHTML, @"\s{2,}", " ");
ws.Cell("C" + rowIndex).Value = noHTMLNormalised;
rowIndex++;
}
//// From worksheet
var rngTable = ws.Range("A1:C" + rowIndex);
var rngHeader = ws.Range("A1:C1");
var rngYear = ws.Range("A2:A" + rowIndex);
//var rngDate = ws.Range("B2:B" + rowIndex);
var rngTitle = ws.Range("B2:D" + rowIndex);
var rngDesc = ws.Range("C2:C" + rowIndex);
rngHeader.Style.Fill.SetBackgroundColor(XLColor.CoolGrey);
rngHeader.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
rngHeader.Style.Font.Bold = true;
rngHeader.Style.Font.FontColor = XLColor.White;
// rngYear.Style.Fill.SetBackgroundColor(XLColor.CoolGrey);
rngYear.Style.Font.Bold = true;
rngYear.Style.Font.FontColor = XLColor.Black;
rngYear.Style.Alignment.Indent = 1;
//rngDate.Style.DateFormat.Format = "MM/DD/YYYY";
//rngDate.Style.Alignment.Indent = 10;
rngDesc.Style.Alignment.SetWrapText();
ws.RangeUsed().Style.Border.OutsideBorder = XLBorderStyleValues.Thick;
var col3 = ws.Column("C");
//col3.Style.Fill.BackgroundColor = XLColor.Red;
col3.Width = 100;
ws.Columns().AdjustToContents();
string fileName;
fileName = "Golf_Calendat.xlsx";
wb.SaveAs(HttpContext.Current.Server.MapPath("../excel/" + fileName));
解决上述问题的任何帮助,以及我们是否可以将文本包装在描述列中以及行是否可以根据包装的文本采用自动高度。
顺便提一下,我正在使用using Excel = Microsoft.Office.Interop.Excel; 进行 excel 导出
【问题讨论】:
标签: c# excel office-interop excel-interop