[OpenXml] Read/Write row/cell from excel
public static void test(){
using (SpreadsheetDocument document = SpreadsheetDocument.Open("test.xlsx", true))
{
WorkbookPart workbookPart = document.WorkbookPart;
string relId = workbookPart.Workbook.Descendants<Sheet>().First(sheet => sheet.Name.Value.ToLower().Equals("sheet1")).Id;
WorksheetPart worksheetpart = (WorksheetPart)workbookPart.GetPartById(relId);
DocumentFormat.OpenXml.Spreadsheet.Worksheet worksheet = worksheetpart.Worksheet;
SheetData sheetData = worksheet.GetFirstChild<SheetData>();
for (int i = 2; i <= 3; i++)
{
Row row = new Row() { RowIndex = (uint)i };
row.Append(new Cell() { CellReference = "A" + i, DataType = CellValues.String, CellValue = new CellValue("kaka") });//, StyleIndex = styleIndex });
row.Append(new Cell() { CellReference = "B" + i, DataType = CellValues.String, CellValue = new CellValue("2") });//, StyleIndex = styleIndex });
row.Append(new Cell() { CellReference = "C" + i, DataType = CellValues.String, CellValue = new CellValue("GENERAL MANAGEMENT") });//, StyleIndex = styleIndex });
row.Append(new Cell() { CellReference = "D" + i, DataType = CellValues.String, CellValue = new CellValue("2") });//, StyleIndex = styleIndex });
row.Append(new Cell() { CellReference = "E" + i, DataType = CellValues.String, CellValue = new CellValue((1 == 1).ToString()) });//, StyleIndex = styleIndex });
sheetData.Append(row);
}
// loop each row to get value;
string cellValue = GetCellValue(sheetData.Descendants<Row>().ElementAt<Row>(0), "A", getSharedString(document));
worksheet.Save();
}
}
private static List<SharedStringItem> getSharedString(SpreadsheetDocument document)
{
WorkbookPart workbookPart = document.WorkbookPart;
return workbookPart.SharedStringTablePart.SharedStringTable.Elements<SharedStringItem>().ToList<SharedStringItem>();
}
// cell could be null
private static Cell GetCell(Row row, string columnName)
{
return row.Descendants<Cell>().FirstOrDefault(p => p.CellReference == columnName + row.RowIndex);
}
// call getSharedString
// call GetCell
// => retrieve cell value
public static string GetCellValue(Row row, string columnName, List<SharedStringItem> sharedStrings)
{
Cell cell = GetCell(row, columnName);
if (cell == null)
{
return null;
}
string value = "";
if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString)
{
SharedStringItem item = sharedStrings.ElementAt<SharedStringItem>(Int32.Parse(cell.CellValue.Text));
value = item.InnerText;
}
else
{
value = cell.CellValue.Text;
}
return value;
}
[OpenXml] Read/Write row/cell from excel的更多相关文章
- OpenXML - 如何导出List<DataModel>到Excel -- Part 1
最近这几天研究OpenXML: 这是Open XML的一些介绍: Open XML 介绍:http://baike.baidu.com/view/1201978.htm 下载:http://www.m ...
- Aspose.cell处理Excel
(一)从数据库中读取数据写入Excel中 方法1: 步骤:1.建立一个新的项目,引用动态链接库Aspose.dll 2.见下面的原代码 using System;using System.Collec ...
- 使用aspose.cell导出excel需要注意什么?
1.如果导出的数据源是汇总出来的,最好方法是将数据源放到缓存里面,当基本数据源变化的时候,在改变数据2.使用模板导出EXCEL,这样很多样式可以在模板文件里面直接设置,例如:默认打开页签,让列头固定3 ...
- aspose.cell 设置excel里面的文字是超链接
目的: 1.通过方法designer.Workbook.Worksheets[0].Hyperlinks.Add("A1", 1, 1, url);给导出到excel里面的数据加上 ...
- aspose.cell制作excel常见写法
//设置Excel的基本格式信息 Workbook workbook = new Workbook(); Worksheet worksheet = workbook.Worksheets[]; St ...
- Excel 用row()函数 在Excel中自动添加序号,
1.如图 2.用if条件根据产品名称判断是否有值进而序号自动添加 If(G9="","",Row()-8)
- 使用Asponse.Cell解决Excel科学计数法问题
//fileName --文件路径 public DataSet DataSetGetDataFromExcel(string fileName) { DataSet dataset = new Da ...
- aspose.cell 给excel表格设置样式
方法1: Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式 styleTitle.HorizontalAlignment ...
- Find Blank Cell in Excel
Click Home > Find & Select > Go To Special. In the Go To Special dialog box, check the Bla ...
随机推荐
- sql 事务处理
事务定义: 事务是单个的工作单元.如果某一事务成功,则在该事务中进行的所有数据更改均会 提交,成为数据库中的永久组成部分.如果事务遇到错误且必须取消或回滚,则所有 数据更改均被清除. 事务三种运行模式 ...
- linux之chmod
文件/目录权限设置命令:chmod 这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限.该命令有两种用法: 用包含字母和操作符表达式的文字设定法 其语法格式为:chmod [w ...
- 《Java程序员面试宝典》读书笔记1
今天读书发现一个很有趣的问题 请问以下程序会输出什么? public class Test2 { public static void main(String[] arg ...
- Ping pong
Ping pong Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- mysql颠覆实战笔记(三)-- 用户登录(二):保存用户操作日志的方法
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...
- JPA与ORM以及Hibernate
- 有关java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0
时常会遇到java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0这样的异常,现在都知道是jdk版本的问 ...
- JS轮播图
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Linux 命令 - printenv: 打印全部或部分环境信息
命令格式 printenv [OPTION]... [VARIABLE]... 命令参数 -0, --null 以空字符而非换行符结束每一输出行. --help 显示帮助信息. --version 显 ...
- WM_NCCALCSIZE消息处理详解
[前言]指定应用程序的标题高度和边框的宽度的方法有很多种.其中最普遍的方法有下面的两种:第一种:创建没有标题栏应用程序,在客户区让出一部分空间用一幅图片画一个标题栏,让人“误认为”是标题栏.第二种:处 ...