//转为pdf
private void CelltoPDF(string cellPath, string pdfPath)
{
Workbook book = new Workbook();
book.Open(cellPath);
book.Save(pdfPath, FileFormatType.Pdf);
}
//导入
private DataTable ReadExcel(string fielPathName)
{
Workbook book = new Workbook();
book.Open(fielPathName);
Worksheet sheet = book.Worksheets[0];
Cells cells = sheet.Cells;
//第一行标题不导入
//cells.ExportDataTable(,);
、、
使用 ExportDataTableAsString 转换成的table标题是string类型,支持和 datatable。select的使用
DataTable dtresult = cells.ExportDataTable(1, 0, cells.MaxDataRow , cells.MaxDataColumn + 1, false);
//true会把第一行作为标题,false则 c1,--cn作为标题
dtresult.Columns["Column1"].ColumnName = "Name";
dtresult.Columns["Column2"].ColumnName = "Age";
dtresult.Columns["Column3"].ColumnName = "Gender";
dtresult.Columns["Column4"].ColumnName = "Salary";
dtresult.Columns["Column5"].ColumnName = "BirthDay";
int r = dtresult.Rows.Count;
return dtresult;
}
//导出
MemoryStream stream = OutFileToStream(ModelDB.dbDT);
byte[] bytes = stream.ToArray();//StreamToBytes(stream);
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("23.xls", System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
private MemoryStream OutFileToStream(DataTable dt)
{
Workbook workbook = new Workbook(); //工作簿
Worksheet sheet = workbook.Worksheets[0]; //工作表
Cells cells = sheet.Cells;//单元格
//为标题设置样式
Aspose.Cells.Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式[标题]
styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中
styleTitle.Font.Name = "宋体";//文字字体
styleTitle.Font.Size = 12;//文字大小
styleTitle.Font.IsBold = true;//粗体
styleTitle.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0);
styleTitle.Pattern = BackgroundType.Solid;//设置背景颜色
//普通字符串样式
Aspose.Cells.Style strStyle = workbook.Styles[workbook.Styles.Add()];//新增样式
strStyle.HorizontalAlignment = TextAlignmentType.Center;//文字居中
strStyle.Font.Name = "宋体";//文字字体
strStyle.Font.Size = 9;//文字大小
strStyle.Font.IsBold = true;//粗体
strStyle.IsTextWrapped = true;//单元格内容自动换行
//金钱样式,
Aspose.Cells.Style moneyStyle = workbook.Styles[workbook.Styles.Add()];//新增样式金钱
moneyStyle.Number = 4;//千分位方式展示金钱
//日期样式
Aspose.Cells.Style dateStyle = workbook.Styles[workbook.Styles.Add()];
dateStyle.Custom = "yyyy-MM-dd";
int Colnum = dt.Columns.Count;//表格列数
int Rownum = dt.Rows.Count;//表格行数
//列名行
//数据库存标题一般是英文,excel一般是汉字。所以标题一般添加
cells[0, 0].PutValue("姓名_"); cells[0, 0].SetStyle(styleTitle);
cells[0, 1].PutValue("年龄_"); cells[0, 1].SetStyle(styleTitle);
cells[0, 2].PutValue("性别_"); cells[0, 2].SetStyle(styleTitle);
cells[0, 3].PutValue("工资_"); cells[0, 3].SetStyle(styleTitle);
cells[0, 4].PutValue("出生日期_"); cells[0, 4].SetStyle(styleTitle);
cells.SetRowHeight(0, 35);
int[] moneyCol = { 3 };//需要千分位的列缩影
int[] dateCol = { 4 };//需要日期个格式的列索引
//生成列
for (int i = 0; i < Rownum; i++)
{
for (int k = 0; k < Colnum; k++)
{
if (dt.Rows[i][k] != null)
{
if (moneyCol.Contains(k))
{
cells[i + 1, k].PutValue(Convert.ToDecimal(dt.Rows[i][k].ToString()));
cells[i + 1, k].SetStyle(moneyStyle);
}
else if (dateCol.Contains(k))
{
cells[i + 1, k].PutValue(Convert.ToDateTime(dt.Rows[i][k].ToString()));
cells[i + 1, k].SetStyle(dateStyle);
}
else
{
cells[i + 1, k].PutValue(dt.Rows[i][k].ToString(), true);
cells[i + 1, k].SetStyle(strStyle);
}
}
}
cells.SetRowHeight(1 + i, 24);
}
MemoryStream ms = workbook.SaveToStream();
return ms;
}
/// <summary>
/// 导出数据到本地
/// </summary>
/// <param name="dt">要导出的数据</param>
/// <param name="tableName">表格标题</param>
/// <param name="path">保存路径</param>
public static void OutFileToDisk(DataTable dt, string tableName, string path)
{
Workbook workbook = new Workbook(); //工作簿
Worksheet sheet = workbook.Worksheets[0]; //工作表
Cells cells = sheet.Cells;//单元格
//为标题设置样式
Aspose.Cells.Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式
styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中
styleTitle.Font.Name = "宋体";//文字字体
styleTitle.Font.Size = 18;//文字大小
styleTitle.Font.IsBold = true;//粗体
//样式2
Aspose.Cells.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
Aspose.Cells.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);
}