在 .net 应用程序中,excel 文件和 datatable 之间的高效地转换数据对于提升数据的可访问性、分析和处理能力至关重要。将数据从 excel 转移到 datatable 后,开发者可以利用 .net 的强大功能进行数据分析、转换和处理,而将数据转换回 excel 则方便了数据的共享、报告以及与其他系统的集成。本文演示了如何使用 spire.xls for .net,通过 c# 代码将 excel 数据导出到 datatable,以及从 datatable 导入数据到 excel 文件。
安装 spire.xls for .net
首先,您需要将 spire.xls for .net 包含的 dll 文件作为引用添加到您的 .net 项目中。dll 文件可以从此链接下载,也可以通过 安装。
pm> install-package spire.xls
用 c# 将 excel 数据导出到 datatable
spire.xls for .net 提供的 worksheet.exportdatatable() 方法,可以将整个 excel 工作表的数据导出到 datatable 对象。此外,还有 worksheet.range[].exportdatatable() 方法可以从指定的单元格范围导出到 datatable。开发人员可以使用 exporttableoptions 类来自定义导出单元格范围时的导出选项。导出 excel 数据到 datatable 的步骤如下:
- 创建 workbook 类的实例,并使用 workbook.loadfromfile() 方法加载 excel 文件。
- 通过 workbook.worksheets[] 属性访问 excel 文件中的工作表。
- 使用 worksheet.exportdatatable() 方法将整个工作表的数据导出到 datatable 对象。
- 也可以创建 exporttableoptions 实例以指定导出选项,使用 worksheet.exportdatatable() 方法结合 exporttableoptions 实例,将特定单元格范围的数据导出到 datatable。
- c#
using spire.xls;
using system.data;
namespace exceltodatatable
{
class program
{
static void main(string[] args)
{
// 创建一个 workbook 实例
workbook wb = new workbook();
// 加载 excel 文件
wb.loadfromfile("示例.xlsx");
// 获取一个工作表
worksheet sheet = wb.worksheets[0];
// 导出工作表数据到 datatable
//datatable datatable = sheet.exportdatatable();
// 或者导出指定单元格范围到 datatable
exporttableoptions options = new exporttableoptions();
options.computedformulavalue = true;
options.exportcolumnnames = false;
options.keepdataformat = true;
options.renamestrategy = renamestrategy.letter;
datatable datatable = sheet.range[2, 1, 4, 6].exportdatatable(options);
// 输出 datatable 的列名
for (int i = 0; i < datatable.columns.count; i )
{
console.write(datatable.columns[i].columnname "\t");
}
console.writeline();
// 输出 datatable 的数据行
foreach (datarow row in datatable.rows)
{
foreach (var item in row.itemarray)
{
console.write(item "\t");
}
console.writeline();
}
}
}
}
用 c# 将 datatable 数据导入 excel 文件
spire.xls for .net 还提供了 worksheet.insertdatatable(datatable, colheaders: bool, firstrow: int, firstcolumn: int) 方法,可以将 datatable 对象的数据直接插入到 excel 工作表中。将 datatable 数据导入 excel 的详细步骤如下:
- 定义数据并创建 datatable 对象。
- 创建 workbook 实例,并使用 workbook.worksheets.clear() 方法清除默认工作表。
- 使用 workbook.worksheets.add(sheetname: string) 方法插入指定名称的新工作表。
- 使用 worksheet.insertdatatable() 方法将 datatable 对象中的数据插入到工作表中。
- 根据需要调整格式。
- 使用 workbook.savetofile() 方法保存工作簿。
- c#
using spire.xls;
using system.data;
namespace datatabletoexcel
{
class program
{
static void main(string[] args)
{
// 定义数据集并创建 datatable 实例
// 用新的产品和数量重定义数据数组
string[,] data = new string[,]
{
{ "类别", "书名", "作者", "出版社", "价格(元)" },
{ "小说", "平凡的世界", "路遥", "人民文学出版社", "45" },
{ "科技", "深入浅出计算机组成原理", "杨帆", "机械工业出版社", "79" },
{ "历史", "明朝那些事儿", "当年明月", "中国友谊出版公司", "39.8" },
{ "哲学", "存在与时间", "马丁•海德格尔", "生活•读书•新知三联书店", "58" },
};
datatable datatable = new datatable();
// 获取列数
int columncount = data.getlength(1);
// 向 datatable 添加列
for (int col = 0; col < columncount; col )
{
datatable.columns.add(data[0, col]);
}
// 向 datatable 添加行
for (int row = 1; row < data.getlength(0); row )
{
datarow datarow = datatable.newrow();
for (int col = 0; col < columncount; col )
{
datarow[col] = data[row, col];
}
datatable.rows.add(datarow);
}
// 创建 workbook 实例
workbook workbook = new workbook();
// 清除默认工作表并添加新工作表
workbook.worksheets.clear();
worksheet sheet = workbook.worksheets.add("salesreport");
// 将 datatable 数据导入工作表
sheet.insertdatatable(datatable, true, 1, 1);
// 根据需要调整格式
// 调整字体
sheet.rows[0].style.font.size = 13;
sheet.rows[0].style.font.isbold = true;
sheet.rows[0].style.font.fontname = "微软雅黑";
for (int j = 1; j < sheet.allocatedrange.rowcount; j )
{
sheet.rows[j].style.font.size = 12;
sheet.rows[j].style.font.fontname = "微软雅黑";
}
// 自动调整列宽
for (int i = 1; i <= sheet.allocatedrange.columncount; i )
{
sheet.autofitcolumn(i);
}
// 将工作簿保存到文件
workbook.savetofile("output/datatable导入excel.xlsx", fileformat.version2016);
workbook.dispose();
}
}
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。