Aspose.Cells如何将datatable导出Excel
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Aspose.Cells如何将datatable导出Excel相关的知识,希望对你有一定的参考价值。
参考技术A using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using System.Data; using Aspose.Cells; /// ///OutFileDao 的摘要说明 /// publicclass OutFileDao public OutFileDao() // //TODO: 在此处添加构造函数逻辑 // /// /// 测试程序 /// publicstaticvoid testOut() DataTable dt = new DataTable(); dt.Columns.Add("name"); dt.Columns.Add("sex"); DataRow dr = dt.NewRow(); dr["name"] = "名称1"; dr["sex"] = "性别1"; dt.Rows.Add(dr); DataRow dr1 = dt.NewRow(); dr1["name"] = "名称2"; dr1["sex"] = "性别2"; dt.Rows.Add(dr1); OutFileToDisk(dt, "测试标题", @"d:\测试.xls"); /// /// 导出数据到本地 /// /// 要导出的数据 /// 表格标题 /// 保存路径 publicstaticvoid OutFileToDisk(DataTable dt,string tableName,string path) Workbook workbook = new Workbook(); //工作簿 Worksheet sheet = workbook.Worksheets[0]; //工作表 Cells cells = sheet.Cells;//单元格 //为标题设置样式 Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式 styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中 styleTitle.Font.Name = "宋体";//文字字体 styleTitle.Font.Size = 18;//文字大小 styleTitle.Font.IsBold = true;//粗体 //样式2 Style style2 = workbook.Styles[workbook.Styles.Add()];//新增样式 style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中 style2.Font.Name = "宋体";//文字字体 style2.Font.Size = 14;//文字大小 style2.Font.IsBold = true;//粗体 style2.IsTextWrapped = true;//单元格内容自动换行 style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //样式3 Style style3 = workbook.Styles[workbook.Styles.Add()];//新增样式 style3.HorizontalAlignment = TextAlignmentType.Center;//文字居中 style3.Font.Name = "宋体";//文字字体 style3.Font.Size = 12;//文字大小 style3.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; int Colnum = dt.Columns.Count;//表格列数 int Rownum=dt.Rows.Count;//表格行数 //生成行1 标题行 cells.Merge(0, 0, 1, Colnum);//合并单元格 cells[0, 0].PutValue(tableName);//填写内容 cells[0, 0].SetStyle(styleTitle); cells.SetRowHeight(0, 38); //生成行2 列名行 for (int i = 0; i < Colnum; i++) cells[1, i].PutValue(dt.Columns[i].ColumnName); cells[1, i].SetStyle(style2); cells.SetRowHeight(1, 25); //生成数据行 for (int i = 0; i < Rownum; i++) for (int k = 0; k < Colnum; k++) cells[2 + i, k].PutValue(dt.Rows[i][k].ToString()); cells[2 + i, k].SetStyle(style3); cells.SetRowHeight(2+i, 24); workbook.Save(path); public MemoryStream OutFileToStream(DataTable dt, string tableName) Workbook workbook = new Workbook(); //工作簿 Worksheet sheet = workbook.Worksheets[0]; //工作表 Cells cells = sheet.Cells;//单元格 //为标题设置样式 Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式 styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中 styleTitle.Font.Name = "宋体";//文字字体 styleTitle.Font.Size = 18;//文字大小 styleTitle.Font.IsBold = true;//粗体 //样式2 Style style2 = workbook.Styles[workbook.Styles.Add()];//新增样式 style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中 style2.Font.Name = "宋体";//文字字体 style2.Font.Size = 14;//文字大小 style2.Font.IsBold = true;//粗体 style2.IsTextWrapped = true;//单元格内容自动换行 style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //样式3 Style style3 = workbook.Styles[workbook.Styles.Add()];//新增样式 style3.HorizontalAlignment = TextAlignmentType.Center;//文字居中 style3.Font.Name = "宋体";//文字字体 style3.Font.Size = 12;//文字大小 style3.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; int Colnum = dt.Columns.Count;//表格列数 int Rownum = dt.Rows.Count;//表格行数 //生成行1 标题行 cells.Merge(0, 0, 1, Colnum);//合并单元格 cells[0, 0].PutValue(tableName);//填写内容 cells[0, 0].SetStyle(styleTitle); cells.SetRowHeight(0, 38); //生成行2 列名行 for (int i = 0; i < Colnum; i++) cells[1, i].PutValue(dt.Columns[i].ColumnName); cells[1, i].SetStyle(style2); cells.SetRowHeight(1, 25); //生成数据行 for (int i = 0; i < Rownum; i++) for (int k = 0; k < Colnum; k++) cells[2 + i, k].PutValue(dt.Rows[i][k].ToString()); cells[2 + i, k].SetStyle(style3); cells.SetRowHeight(2 + i, 24); MemoryStream ms = workbook.SaveToStream(); return ms; public static bool ExportExcelWithAspose(System.Data.DataTable dt, string path) bool succeed = false; if (dt != null) try Aspose.Cells.License li = new Aspose.Cells.License(); string lic = Resources.License; Stream s = new MemoryStream(ASCIIEncoding.Default.GetBytes(lic)); li.SetLicense(s); Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook(); Aspose.Cells.Worksheet cellSheet = workbook.Worksheets[0]; cellSheet.Name = dt.TableName; int rowIndex = 0; int colIndex = 0; int colCount = dt.Columns.Count; int rowCount = dt.Rows.Count; //列名的处理 for (int i = 0; i < colCount; i++) cellSheet.Cells[rowIndex, colIndex].PutValue(dt.Columns[i].ColumnName); cellSheet.Cells[rowIndex, colIndex].Style.Font.IsBold = true; cellSheet.Cells[rowIndex, colIndex].Style.Font.Name = "宋体"; colIndex++; Aspose.Cells.Style style = workbook.Styles[workbook.Styles.Add()]; style.Font.Name = "Arial"; style.Font.Size = 10; Aspose.Cells.StyleFlag styleFlag = new Aspose.Cells.StyleFlag(); cellSheet.Cells.ApplyStyle(style, styleFlag); rowIndex++; for (int i = 0; i < rowCount; i++) colIndex = 0; for (int j = 0; j < colCount; j++) cellSheet.Cells[rowIndex, colIndex].PutValue(dt.Rows[i][j].ToString()); colIndex++; rowIndex++; cellSheet.AutoFitColumns(); path = Path.GetFullPath(path); workbook.Save(path); succeed = true; catch (Exception ex) succeed = false; return succeed; 本回答被提问者采纳把DataTable导出为Excel文件
今天项目里遇到了需要把DataTable导出为Excel的问题
将解决方案记录在园子备忘
需要一些东西
第三方的类库Aspose.Cells
此处随意找个下载链接:http://www.cr173.com/soft/66096.html
本人不保证该链接的合法性和有效性
说重点,上Demo
public bool ExportAsExcel(string URI, DataSet ds)
{
Aspose.Cells.Workbook wk = new Aspose.Cells.Workbook();
wk.Worksheets.Clear();
if (ds.IsNullOrNoTables())
return false;
foreach (DataTable dt in ds.Tables)
{
if (dt == null)
continue;
Aspose.Cells.Worksheet sheet = wk.Worksheets.Add(dt.TableName);
Aspose.Cells.Cells cell = sheet.Cells;
cell.ImportDataTable(dt, true, 0, 0);
tables.Add(dt.TableName);
}
try
{
wk.Save(URI);
return true;
}
catch (Exception)
{
MessageBox.Show("导出路径不存在");
return false;
}
}
ds是包含要打印DataTable的DataSet
URI是保存文件的完整路径
IsNullOrNoTables()是我写的DataSet的一个扩展方法,判断DataSet是空对象还是没用表的空集,不必在意
以上是关于Aspose.Cells如何将datatable导出Excel的主要内容,如果未能解决你的问题,请参考以下文章