/// <summary>
/// Datatable生成Excel表格(不生成临时文件)并将文件上传至ftp
/// </summary>
/// <param name="m_DataTable">Datatable</param>
/// <param name="filePath">保存路径</param>
/// <param name="s_FileName">文件名</param>
/// <returns></returns>
public static bool DataToExcelAndUploadFtp(DataTable dt, string filePath, string s_FileName)
{
try
{
NPOI.XSSF.UserModel.XSSFWorkbook workbook = new NPOI.XSSF.UserModel.XSSFWorkbook();
ISheet sheet = string.IsNullOrEmpty(dt.TableName) ? workbook.CreateSheet("Sheet1") : workbook.CreateSheet(dt.TableName);//创建工作表
#region 标题
IRow row = sheet.CreateRow(0);//在工作表中添加一行
for (int i = 0; i < dt.Columns.Count; i++)
{
ICell cell = row.CreateCell(i);//在行中添加一列
cell.SetCellValue(dt.Columns[i].ColumnName);//设置列的内容
}
#endregion
#region 填充数据
for (int i = 1; i <= dt.Rows.Count; i++)//遍历DataTable行
{
DataRow dataRow = dt.Rows[i - 1];
row = sheet.CreateRow(i);//在工作表中添加一行for (int j = 0; j < dt.Columns.Count; j++)//遍历DataTable列
{
ICell cell = row.CreateCell(j);//在行中添加一列
cell.SetCellValue(dataRow[j].ToString());//设置列的内容
}
}
#endregion
#region 输出Excel
byte[] buffer;
using (MemoryStream ms = new MemoryStream())
{
//将工作簿写入内存流中
workbook.Write(ms);
//buffer = ms.GetBuffer(); //GetBuffer用wps打开没事,但是office会报修复异常,可以使用下面的ToArray返回真实长度
buffer = ms.ToArray();
ms.Dispose();
ms.Close();
}#region 上传至ftp
Ftp.FtpHelper ftp = new Ftp.FtpHelper("ftp://地址/", "账号", "密码");
bool result = ftp.UploadFile(buffer, filePath + "/" + s_FileName, true);//上传
#endregion
return result;
}
catch (Exception ex)
{
throw ex;
}
#endregion
}
c# Datatable生成Excel表格(不生成临时文件)并将文件上传至ftp
最新推荐文章于 2024-03-11 21:22:10 发布