在ASP.NET中应用Excel:(7)表格尺寸的计算
来源:互联网 发布:女生用的血滴子淘宝 编辑:程序博客网 时间:2024/05/19 00:17
上一节留了个尾巴,没有说如何获取表格的尺寸。其实表格尺寸的计算在读取Excel工作表数据时就应该进行,同时进行的还有计算包含数据的单元格的最大列号和行号。
具体实现是:
for (int r = rowRange.Count; r >= 1; r--){ XmlElement row_elem = xml.CreateElement("ROW"); double rowHeight = 18.5f; for (int c = 1; c < colRange.Count; c++) { if (data[r, c] != null) { .... // 获取行列号 cell_elem.SetAttribute("row", r.ToString()); cell_elem.SetAttribute("col", c.ToString()); // 计算合并和普通单元格的尺寸 if ((bool)cell.MergeCells) { Excel.Range ma = (Excel.Range)cell.MergeArea; Excel.Range macol = ma.Columns; Excel.Range marow = ma.Rows; // 获取合并属性 ... // 获取合并区域的尺寸 cell_elem.SetAttribute("width", ma.Width.ToString() + "pt"); cell_elem.SetAttribute("height", ma.Height.ToString() + "pt"); // 更新本行的最大高度 if ((double)ma.Height > rowHeight) rowHeight = (double)ma.Height; // 释放 ... } else { // 非合并单元格 cell_elem.SetAttribute("colspan", "1"); cell_elem.SetAttribute("rowspan", "1"); cell_elem.SetAttribute("width", cell.Width.ToString() + "pt"); cell_elem.SetAttribute("height", cell.Height.ToString() + "pt"); if ((double)cell.Height > rowHeight) rowHeight = (double)cell.Height; } row_elem.AppendChild(cell_elem); if (r > maxRow) maxRow = r; // 更新最大行号 if (c > maxCol) maxCol = c; // 更新最大列号 // 释放 .... } // if has data } // for c if (row_elem.ChildNodes.Count > 0 || sheet_elem.ChildNodes.Count > 0) { row_elem.SetAttribute("height", rowHeight.ToString() + "pt"); // 这里设置行高 sheet_elem.InsertBefore(row_elem, sheet_elem.FirstChild); }} // for rsheet_elem.SetAttribute("row", maxRow.ToString()); // 保存最大行列号,也就是工作表实际有数据的区域sheet_elem.SetAttribute("col", maxCol.ToString());{ // 这段代码描述如何获取工作表指定范围的尺寸 Excel.Range borderCell = (Excel.Range)range.get_Item(maxRow, maxCol); // 获取最右下的单元格 // 获取其尺寸作为工作表的尺寸,注意:未考虑如果该单元格是否合并的问题,留待同学的课后作业 sheet_elem.SetAttribute("width", ((double)borderCell.Left + (double)borderCell.Width).ToString()); sheet_elem.SetAttribute("height", ((double)borderCell.Top + (double)borderCell.Height).ToString()); releaseComObject(borderCell); // 收尾工作 borderCell = null;}
有了工作表的尺寸,就可以设置TabPanel的尺寸了:
panel.ID = "Panel" + m;// 这里设置TabPanel的尺寸panel.Attributes.Add("Width", sheet_node_list[m].Attributes["width"].Value);panel.Attributes.Add("Height", sheet_node_list[m].Attributes["height"].Value);
// 这里获取工作表的最大行列号int _rowNum = Math.Max(1, int.Parse(sheetNodes[m].Attributes["row"].Value) + 1);int _colNum = Math.Max(1, int.Parse(sheetNodes[m].Attributes["col"].Value) + 1);
在向表格填充单元格和数据的时候,设置表格的尺寸:
protected void fillTableData(Table tbl, int _rowNum, int _colNum, XmlNode sheet_node){ tbl.Attributes.Add("cellpadding", "0"); tbl.Attributes.Add("cellspacing", "0"); tbl.Style.Add("border-collapse", "collapse"); tbl.Style.Add("table-layout", "fixed"); // 还记得这一行吗?设置表格的宽度 tbl.Style.Add("width", sheet_node.Attributes["width"].Value + "pt"); tbl.Style.Add("border", "1px solid black"); ....
还需要设置TabContainer的属性:在属性面板中,清空Width和Height,设置ScrollBars为"Auto"。这样就可以看到比较完美的界面了,如果不对,请仔细检察代码,并尝试其它不同的属性值。
- 在ASP.NET中应用Excel:(7)表格尺寸的计算
- 在ASP.NET中应用Excel:(7)表格尺寸的计算
- ASP.NET中应用Excel:(6)在服务器端生成HTML表格
- 在ASP.NET中应用Excel:(8)为HTML表格增加编辑功能
- ASP.NET中应用Excel:(10)在客户端生成HTML表格[修正]
- ASP.NET中应用Excel:(6)在服务器端生成HTML表格
- 在ASP.NET中应用Excel:(8)为HTML表格增加编辑功能
- ASP.NET中应用Excel:(9)实现表格的自动增长
- ASP.NET中应用Excel:(9)实现表格的自动增长
- asp.net导出excel表格的总结
- NPOI在ASP.NET上传下载Excel文件的应用
- 在Asp.Net中,导入Excel表格数据,通常有两种方法
- 在ASP.NET中将数据库中数据导出为Excel表格
- 在ASP.NET中将数据库中数据导出为Excel表格
- 在ASP.NET中打印表格
- 在ASP.Net中创建动态表格
- 在ASP.Net中创建动态表格
- Asp.Net 导入Excel表格
- 五种提高 SQL 性能的方法
- 第 2 章 震撼吧!让你知道ext表格控件的厉害。
- 【搜集】问题:什么是 PEAR?PEAR 是什么意思?
- 备份msn自定义图示
- 开博宣言
- 在ASP.NET中应用Excel:(7)表格尺寸的计算
- 群工作
- 用GetGlyphOutline取字体点阵
- 走出软件作坊:三五个人十来条枪 如何成为开发正规军(二)
- 什么是MVC
- 收藏:jsp中java中文编码问题的个人经验
- 卫星地图上发现的带王冠的人
- 在ASP.NET中应用Excel:(8)为HTML表格增加编辑功能
- 如何恢复 Linux 上删除的文件:ext2