using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
using NPOI.SS.UserModel;
using System.IO;
using NPOI.SS.Util;
using NPOI.HSSF.Util;
using System.Collections;
using System.Data;
using NPOI.XSSF.UserModel;
using DataLinkMesWork;
using NPOI.XSSF.Streaming;
using Spire.Xls;
namespace projectUse
{
///
/// 文件代码
///
/// 01 计划工时模板
/// 02 外协加工任务单
/// 03 外购备料请款
///
public partial class WriteExcelNPOI_2005
{
///
/// 根据模板填写报表
///
///
///
///
///
public static bool WriteExcel_2005(DataSet ds, out byte[] bytes, out string fileExtension)
{
fileExtension = "xls";
ISheet sheet = null;
bytes = null;
// 模板数据
DataTable dt1;
// 表头数据
DataTable dt2;
// 表格1数据
DataTable dt3;
// 表格2数据
DataTable dt4;
// 表格3数据
DataTable dt5;
try
{
dt1 = ds.Tables[0]; // 模板数据
dt2 = ds.Tables[1]; // 表头数据
dt3 = ds.Tables[2]; // 表格1数据
dt4 = ds.Tables[3]; // 表格2数据
dt5 = ds.Tables[4]; // 表格3数据
string fileNameDownLoad = "";
string tablecode = "2005";
byte[] bytesFile;
tablecode = dt1.Rows[0]["tabletype"].ToString();
int rowCount = dt1.Rows.Count + dt2.Rows.Count + dt3.Rows.Count + dt4.Rows.Count + dt5.Rows.Count;//行数
if (rowCount > 20000)
{
XSSFWorkbook wk = new XSSFWorkbook();
fileExtension = "xlsx";
sheet = wk.CreateSheet("Sheet1");
ICell cell;
IRow row = sheet.CreateRow(0);//excel第一行设为列头
}
else
{
HSSFWorkbook wk = new HSSFWorkbook();
sheet = wk.CreateSheet("Sheet1");
ICell cell;
IRow row = sheet.CreateRow(0);//excel第一行设为列头
fileExtension = "xls";
WriteHead2005FirstRow(sheet, dt2);
OutExcelFileMemoryStream(wk, out bytes);
}
return true;
}
catch
{
return false;
}
}
private static void WriteHead2005FirstRow(ISheet sheet, DataTable dt)
{
try
{
string tableFirstRowName = dt.Rows[0]["tableTitle"].ToString();
IRow row1 = sheet.GetRow(0);
ICell cell1 = row1.CreateCell(0);
//合并单元格 CellRangeAddress四个参数为:起始行,结束行,起始列,结束列
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10));
cell1.SetCellValue(tableFirstRowName);
string orderCode = dt.Rows[0]["订单号"].ToString();
string enignerType = dt.Rows[0]["发动机型号"].ToString();
string enignerCode = dt.Rows[0]["发动机号"].ToString();
string uplineTime = dt.Rows[0]["上线时间"].ToString();
// 订单号
IRow row2 = sheet.GetRow(1);
ICell cell2 = row2.CreateCell(1);
sheet.AddMergedRegion(new CellRangeAddress(1, 1, 0, 1));
cell2.SetCellValue("订单号");
IRow row3 = sheet.GetRow(1);
ICell cell3 = row3.CreateCell(1);
sheet.AddMergedRegion(new CellRangeAddress(1, 1, 2, 4));
cell3.SetCellValue(orderCode);
// 发动机号
IRow row4 = sheet.GetRow(1);
ICell cell4 = row4.CreateCell(1);
sheet.AddMergedRegion(new CellRangeAddress(1, 1, 5, 6));
cell4.SetCellValue("发动机号");
IRow row5 = sheet.GetRow(1);
ICell cell5 = row5.CreateCell(1);
sheet.AddMergedRegion(new CellRangeAddress(1, 1, 7, 10));
cell5.SetCellValue(enignerCode);
// 订单号
IRow row22 = sheet.GetRow(2);
ICell cell22 = row22.CreateCell(2);
sheet.AddMergedRegion(new CellRangeAddress(2, 2, 0, 1));
cell22.SetCellValue("发动机型号");
IRow row32 = sheet.GetRow(2);
ICell cell32 = row32.CreateCell(2);
sheet.AddMergedRegion(new CellRangeAddress(2, 2, 2, 4));
cell32.SetCellValue(enignerType);
// 发动机号
IRow row42 = sheet.GetRow(2);
ICell cell42 = row42.CreateCell(2);
sheet.AddMergedRegion(new CellRangeAddress(2, 2, 5, 6));
cell42.SetCellValue("上线时间");
IRow row52 = sheet.GetRow(2);
ICell cell52 = row52.CreateCell(2);
sheet.AddMergedRegion(new CellRangeAddress(2, 2, 7, 10));
cell52.SetCellValue(uplineTime);
}
catch
{
}
}
private static void WriteHead2005SecondRow(ISheet sheet, DataTable dt)
{
try
{
string tableFirstRowName = dt.Rows[0]["tableTitle"].ToString();
IRow row = sheet.GetRow(0);
ICell cell = row.CreateCell(0);
//合并单元格 CellRangeAddress四个参数为:起始行,结束行,起始列,结束列
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10));
cell.SetCellValue(tableFirstRowName);
}
catch
{
}
}
static private void OutExcelFileMemoryStream(IWorkbook wk, out byte[] bytes)
{
MemoryStream ms = new MemoryStream();
wk.Write(ms);
bytes = ms.ToArray();
}
}
}