我试图将Excel工作表值导入文本框。在数据集超级脚本值不来。像x到2的力量。它在数据集中以x2的形式出现 我需要获得数据集中的超级脚本
下面的是从excel
获取值的代码 string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path1 + ";Extended Properties=Excel 12.0;Persist Security Info=False";
//Create Connection to Excel work book
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
//Create OleDbCommand to fetch data from Excel
OleDbCommand cmd = new OleDbCommand("Select [Answer],[Question],[Option1],[Option2],[Option3],[Option4],[Solution] from [Sheet1$]", excelConnection);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
请检查屏幕截图
答案 0 :(得分:0)
根本问题是上标不是单元格的值的一部分,它是单元格的格式的一部分。
您的代码会提取单元格的值,这些值实际上只是简单的字符串,然后您将这些字符串存储在DataSet
中。
因此,您有两个问题:
我看到3种可能的方法来解决这个问题。根据你想要实现的目标以及它与其他代码的匹配程度,只有你知道哪个最适合你的“大图”,但根据我所知,这些大致按照优先顺序排列:
DataSet
中存储这些浮点数。然后,当您从DataSet
计划B将从Excel工作表中提取格式信息,以便您可以在代码中复制它。使用此方法需要解决2个问题 - 第一个是您需要使用不同的方法从Excel文件中导出数据,第二个是您需要一些合适的对象来存储带有上标元素的格式化文本的表示。使用像EPPlus这样的库是可以实现的(如果有点kludgy)。例如,使用html来表示字符串我可以做这样的事情(在一个合适的循环中循环遍历你要导出的所有excel行):
using (ExcelPackage package = new ExcelPackage(new FileInfo(@"C:\temp\superscriptExample.xlsx")))
{
var ws = package.Workbook.Worksheets.First();
ExcelRichTextCollection richText = ws.Cells[1, 1].RichText;
string htmlString = "";
foreach (var part in richText)
{
if (part.VerticalAlign == ExcelVerticalAlignmentFont.Superscript)
{
htmlString += "<sup>" + part.Text + "</sup>";
}
else
{
htmlString += part.Text;
}
}
}
计划C:如果您确定所有字符串都是格式为“xxxxxx10ssN”,其中ss是上标部分,您可以将每个字符串解析为html元素(或者其他任何对象)用于表示格式化的文本),如下所示:
static string GetHtmlRepresentation(string inputTxt)
{
int indexOf10 = inputTxt.IndexOf("10");
int indexOfN = inputTxt.IndexOf("N", indexOf10);
string beforeSupPart = inputTxt.Substring(0, indexOf10 + 2);
string supPart = inputTxt.Substring(indexOf10 + 2, indexOfN - (indexOf10 + 2));
string afterSup = inputTxt.Substring(indexOfN, inputTxt.Length - indexOfN);
return beforeSupPart + "<sup>" + supPart + "</sup>" + afterSup;
}
这个选项非常丑陋但是如果你只是需要一点快速而且肮脏的“完成工作”解决方案,那么也许你想看看它。