首先定义了一个excel,里面对一个区域进行定义名称,例如Area=Sheet1!$A$3:$E$12然后在这个excel转换的xml里面会有一段定义的范围的字段,如 <NamedRange ss:Name="Area" ss:RefersTo="=Sheet1!R3C1:R12C5"/>现在问题是怎么在.net里面取到这区域里面的xml值
就是多个<Row />
还有取出来的话放到哪里?现在我是在用xpath在做,能取到上面所说的ss:Name="Area"的NamedRange下的ss:RefersTo的值
然后取到了row跟col的值,分别给x1,y1 x2,y2用innerxml不断添加节点的话只添加子节点的值
<Row><Cell><Data>1</Data></Cell></Row>
<Row><Cell><Data>2</Data></Cell></Row>
<Row><Cell><Data>3</Data></Cell></Row>row1.innerxml +=row2.innerxml 的出来row1.innerxml的值为Cell><Data>1</Data></Cell>Cell><Data>2</Data></Cell>
我想那个<Row></Row>也能添加进去如果不这样做还有什么好的方法可以获取到几行Row的值,<Row>的父节点是<Table>,但是我要取的值只是<Table>里面的几个子节点有没有动态获取excel内容的例子,刚学习在c#里面读取excel的xml格式然后添加数据进去,想如果excel里面改动格式的话通过excel里面的定义字段来添加数据,不用每次改格式都需要改后台代码
就是多个<Row />
还有取出来的话放到哪里?现在我是在用xpath在做,能取到上面所说的ss:Name="Area"的NamedRange下的ss:RefersTo的值
然后取到了row跟col的值,分别给x1,y1 x2,y2用innerxml不断添加节点的话只添加子节点的值
<Row><Cell><Data>1</Data></Cell></Row>
<Row><Cell><Data>2</Data></Cell></Row>
<Row><Cell><Data>3</Data></Cell></Row>row1.innerxml +=row2.innerxml 的出来row1.innerxml的值为Cell><Data>1</Data></Cell>Cell><Data>2</Data></Cell>
我想那个<Row></Row>也能添加进去如果不这样做还有什么好的方法可以获取到几行Row的值,<Row>的父节点是<Table>,但是我要取的值只是<Table>里面的几个子节点有没有动态获取excel内容的例子,刚学习在c#里面读取excel的xml格式然后添加数据进去,想如果excel里面改动格式的话通过excel里面的定义字段来添加数据,不用每次改格式都需要改后台代码
解决方案 »
- button上文本怎样才能垂直居中?
- 格式问题
- 求几个简单的 ASP.NET 2.0 C# 的程序学习
- 在web.config中设置了身份验证 如何控制目录下的其他页可以匿名访问.
- 分页控件的问题,有请webdiyer。
- 请指教,在asp.net向access数据库添加数据 为何不行!谢谢
- Asp.Net/c# dataGrid?
- 请问怎么解决??从客户端(FreeTextBox1="<EM><U>6</U></EM>")中检测到有潜在危险的 Request.Form 值。
- 怎样才能及时关闭DbConnection
- 关于Excel和DataGrid的问题
- gridview 行背景颜色改变怎么做呀
- 关于Word在SQLServer 2008数据库中存取问题
XmlNode Name = doc.SelectSingleNode("//*/ss:Names/ss:NamedRange[@ss:Name='Area']", xmlnsManager);
string area = Name.Attributes[1].InnerText;
string randc = area.Split('!')[1];
string[] s = randc.Split(':');
string s1 = string.Empty;
string s2 = string.Empty;
for (int i = 0; i < s[0].Length; i++)
{
if (char.IsDigit(s[0][i]))
s1 += s[0][i];
}
if (s.Length > 1)
{
for (int i = 0; i < s[1].Length; i++)
{
if (char.IsDigit(s[1][i]))
s2 += s[1][i];
}
}
int ai = 0, bi = 0, ci = 0, di = 0;
ai = int.Parse(s1[0].ToString()); //x1 R
bi = int.Parse(s1[1].ToString()); //y1 C
if (s2 != string.Empty)
{
ci = int.Parse(s2[0].ToString()); //x2 R
di = int.Parse(s2[1].ToString()); //y2 C
}
XmlNodeList tables = doc.SelectSingleNode("//*/ss:Table", xmlnsManager).SelectNodes("ss:Row",xmlnsManager);
int rows = tables.Count;
XmlNode row1, row2, col1, col2;
row1 = tables[ai - 1];
col1 = row1.ChildNodes[bi - 1];
if (s2 != string.Empty)
{
row2 = tables[ci - 1];
col2 = row2.ChildNodes[di - 1];
}
string content = string.Empty;
for (int i = ai; i < ci + 1; i++)
{
content += tables[i - 1].OuterXml;
}