我目前正在开发一个项目,用于转换来自"标准的测试"字格式为我们正在使用的新Saras程序接受的格式。
我能够解析文件并收集我想要的信息。不幸的是格式化有问题,我只知道如何解析和插入纯文本。
到目前为止,我发现的一些选项包括使用.Copy()方法,然后在单元格上使用.Paste()方法。我正在使用一个类来间歇地保存数据,这样如果另一个解析算法需要用于下一个人的标准"格式,然后数据仍然可以以相同的方式放入excel文档,开发人员只需要担心解析新格式。
注意:如果有办法将其粘贴到一种格式(如独立单元格)中,然后将单元格或单元格值设置为它,那就太棒了。
我发现的另一个选项是使用interop.word.range.formattedtext属性。如果我要从一个word文档转到另一个word文档,这将很有效,但我需要以某种方式将此格式化文本转换为excel单元格。
我当前的思考过程是将文本放入RTF对象中。稍后我会把它放到Excel中,方法是将RTF.text插入单元格并使用RTF.format格式化每个字符。这似乎比我应该做的工作更多。
请让我知道你们想出的一切!
以下是一些代码:
STORAGE:
class Question
{
public string text;
private List<string> responses;
public Question(string txt, List<string> r)
{
text = txt;
responses = r;
}
public List<string> getResponses() { return responses; }
}
PARSING:
if (p < MAX && docs.Paragraphs[p].Range.ListFormat.ListValue != 0)
{
// question main line
qTxt = docs.Paragraphs[p].Range.Text.ToString();
p++;
// question pos responses NOTE: THIS WILL BE USED TO DO MULTIPLE CHOICE LATER
for (; p < MAX && docs.Paragraphs[p].Range.ListFormat.ListValue == 0; p++)
{
tmp = docs.Paragraphs[p].Range.Text.ToString();
if (tmp != null && tmp != "\r")
qTxt += " \r\n " + docs.Paragraphs[p].Range.Text.ToString();
}
}
设定价值:
foreach (Question question in questionList)
{
...
// ITEM TEXT
ws.Cells[row, 15].Value2 = question.text;
...
}
同样,这段代码适用于设置纯文本,我只想知道如何在那里获取格式。
提前致谢!
更新: 我想出了一种使复制和粘贴工作的方法。傻傻的我,我可以保持excel文件一直打开。构造函数现在设置第一行,然后parseDocument函数将用数据填充行。
斗争: 我目前正在使用复制和粘贴功能,但似乎是将文本图像放入我的文档而不是格式化文本本身。
CODE:
// Get the title
Word.Range rng = docs.Paragraphs[p].Range.Duplicate;
int index = 0;
for (; p < MAX && docs.Paragraphs[p].Range.ListFormat.ListValue == 0; p++)
{
string tmp = docs.Paragraphs[p].Range.Text.ToString();
if (tmp != null && tmp != "\r")
++index;
}
rng.MoveEnd(Word.WdUnits.wdParagraph, index);
rng.Copy();
xlDoc.ws.Range["A1", "A1"].PasteSpecial(); // Pastes an image of the title
唉,我正在寻找解决这个问题的方法。如果您有任何解决方案,请告诉我。
谢谢!
PS。如果我取得任何进展,我会不断更新这篇文章。