asp.net fine ui 导出EXCEL

2024-08-23 03:18
文章标签 excel ui 导出 asp net fine

本文主要是介绍asp.net fine ui 导出EXCEL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

A.基础

Microsoft.Office.Interop.Excel.Application app = null;
Microsoft.Office.Interop.Excel.Workbook workbook = null;
Microsoft.Office.Interop.Excel.Worksheet sheet = null;
object missing = System.Reflection.Missing.Value;
string strPath = string.Empty;
string strFileName = string.Empty;
try
{   app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = false;        // 不显示,仅后台生成
workbook = app.Workbooks.Add(true); // 如果打开已存在文件,这里用Open,保存使用Save
// 添加sheet的方法
workbook.Worksheets.Add(missing, missing, missing, missing);
// 修改sheet名的方法,注意sheet的下标从1开始
sheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
sheet.Name = "统计";
// 设置单元格的wrap text属性  
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount+4, 29]].WrapText = false;
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 4, 29]].NumberFormat = "@";
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 4, 29]].EntireRow.AutoFit();
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 4, 29]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
//sheet.Range[sheet.Cells[1, 9], sheet.Cells[30, 9]).NumberFormat = "YYYY-MM-DD HH:mm:ss";
//设置自动调整列宽
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 4, 29]].EntireColumn.AutoFit();
sheet.Range[sheet.Cells[2, 1], sheet.Cells[intRowCount + 4, 29]].Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
sheet.Range[sheet.Cells[2, 1], sheet.Cells[intRowCount + 4, 29]].Borders.Weight = 2;
sheet.Range[sheet.Cells[3, 11], sheet.Cells[4, 11]].Merge(0);
sheet.Range[sheet.Cells[3, 11], sheet.Cells[4, 11]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 4, 29]].Value2 = arr;
// 这里给sheet填充内容部分略
// 如果文件已经存在又不想让“是否替换”的提示窗体显示出来,需要先调用File.Delete来删除文件
strFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
strPath = Server.MapPath("~/upload");
workbook.SaveAs(strPath + "\\" + strFileName, missing, missing, missing, missing, missing,
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, missing, missing,
missing, missing, missing);
Array arr = Array.CreateInstance(typeof(object), intRowCount + 4, 29);
arr.SetValue("区县", 1, 0);
int i = 1
foreach (DataRow row in myData.Tables[0].Rows)
{
arr.SetValue(row["DWNAME"], i, 0);
i++;
}
// 设置array数据,注意选择的行数和列数要与array行数和列数对应
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 4, 29]].Value2 = arr;
//HyperLink1.NavigateUrl = string.Format(@"{0}/{1}/{2}", PageBase.UrlBase, PageBase.UploadDir, strFileName);
//HyperLink1.Text = string.Format("<span  style='color:red;font-weight:bold;'>点这里下载Excel文件{0}</span>", strFileName);
workbook.Close(false, missing, missing);
app.Quit();
workbook = null;
app = null;
GC.Collect();
FileInfo fi = new FileInfo(strPath + "\\" + strFileName);//excelFile为文件在服务器上的地址 
Response.ClearContent();
Response.AppendHeader("Content-Disposition", $"attachment;filename={strFileName}");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.WriteFile(fi.FullName);
Response.Flush();
fi.Delete();
//Response.End();
}
catch (Exception ex)
{
if (app != null)
{
app.Quit();
app = null;
GC.Collect();
}
strError = ex.Message;
ShowNotify(strError, MessageBoxIcon.Error);
}
finally
{
if (app != null)
{
app.Quit();
workbook = null;
app = null;
GC.Collect();
}
}

B返回下载链接

#region 简易的Excel导出,没有单元格合并的功能。
/// <summary>
/// 简易的Excel导出,没有单元格合并的功能。
/// </summary>
/// <param name="myTable">要导出的数据表</param>
/// <param name="lstCol">要导出的列</param>
/// <returns>生成的excel文件名</returns>
public static string ExportExcel(DataTable myTable, List<string> lstCol)
{
Microsoft.Office.Interop.Excel.Application app = null;
Microsoft.Office.Interop.Excel.Workbook workbook = null;
Microsoft.Office.Interop.Excel.Worksheet sheet = null;
try
{
object missing = System.Reflection.Missing.Value;
app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = false;        // 不显示,仅后台生成
workbook = app.Workbooks.Add(true); // 如果打开已存在文件,这里用Open,保存使用Save
// 添加sheet的方法
workbook.Worksheets.Add(missing, missing, missing, missing);
// 修改sheet名的方法,注意sheet的下标从1开始
sheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
sheet.Name = myTable.TableName;
if (myTable == null || myTable.Rows.Count == 0)
throw new Exception("传入的数据为空");
//行数
int intRowCount = myTable.Rows.Count;
//列数
int intColCount = lstCol.Count;
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 1, intColCount]].WrapText = true;
// 设置单元格的数据格式
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 1, intColCount]].NumberFormat = "@";
// 设置自动调整列宽,设置固定列宽
// sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[5001, 5]).EntireColumn.AutoFit();
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 1, intColCount]].EntireColumn.ColumnWidth = 20;
//设置单元格居中
//垂直居中
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 1, intColCount]].VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
//水平居中
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 1, intColCount]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
Array arr = Array.CreateInstance(typeof(object), intRowCount + 1, intColCount);
int intColIndex = 1;
foreach (string col in lstCol)
{
sheet.Range[sheet.Cells[1, intColIndex], sheet.Cells[1, intColIndex]].Value2 = col;
//sheet.Cells[1, intColIndex] = col;
intColIndex++;
}
// 不断的调用下面的的函数填充array中的内容
// 行,列均从0开始
for (int i = 0; i < intRowCount; i++)
{
for (int j = 0; j < intColCount; j++)
{
arr.SetValue(myTable.Rows[i][lstCol[j]], i, j);
}
}
// 设置array数据,注意选择的行数和列数要与array行数和列数对应
sheet.Range[sheet.Cells[2, 1], sheet.Cells[intRowCount + 1, intColCount]].Value2 = arr;
// 这里给sheet填充内容部分略
// 如果文件已经存在又不想让“是否替换”的提示窗体显示出来,需要先调用File.Delete来删除文件
string strFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
string strPath = HttpContext.Current.Server.MapPath(PageBase.UploadUrl);
workbook.SaveAs(strPath + "\\" + strFileName, missing, missing, missing, missing, missing,
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, missing, missing,
missing, missing, missing);
return strFileName;
}
catch (Exception exp)
{
throw new Exception(exp.Message);
}
finally
{
app.Quit();
Marshal.ReleaseComObject(sheet);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(app);
sheet = null;
workbook = null;
app = null;
GC.Collect();
}
}
#endregion

C浏览器流下载

#region 简易的Excel导出,没有单元格合并的功能。
/// <summary>
/// 简易的Excel导出,没有单元格合并的功能。
/// </summary>
/// <param name="myTable">要导出的数据表</param>
/// <param name="lstCol">要导出的列</param>
/// <returns>生成的excel文件名</returns>
public static void ExportExcel(DataTable myTable, List<string> lstCol, HttpResponse Response)
{
Microsoft.Office.Interop.Excel.Application app = null;
Microsoft.Office.Interop.Excel.Workbook workbook = null;
Microsoft.Office.Interop.Excel.Worksheet sheet = null;
try
{
object missing = System.Reflection.Missing.Value;
app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = false;        // 不显示,仅后台生成
workbook = app.Workbooks.Add(true); // 如果打开已存在文件,这里用Open,保存使用Save
// 添加sheet的方法
workbook.Worksheets.Add(missing, missing, missing, missing);
// 修改sheet名的方法,注意sheet的下标从1开始
sheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
sheet.Name = myTable.TableName;
if (myTable == null || myTable.Rows.Count == 0)
throw new Exception("传入的数据为空");
int intRowCount = myTable.Rows.Count;
int intColCount = lstCol.Count;
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 1, intColCount]].WrapText = true;
// 设置单元格的数据格式
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 1, intColCount]].NumberFormat = "@";
// 设置自动调整列宽,设置固定列宽
// sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[5001, 5]).EntireColumn.AutoFit();
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 1, intColCount]].EntireColumn.ColumnWidth = 20;
//设置单元格居中
//垂直居中
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 1, intColCount]].VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
//水平居中
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intRowCount + 1, intColCount]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
Array arr = Array.CreateInstance(typeof(object), intRowCount + 1, intColCount);
int intColIndex = 1;
foreach (string col in lstCol)
{
sheet.Range[sheet.Cells[1, intColIndex], sheet.Cells[1, intColIndex]].Value2 = col;
//sheet.Cells[1, intColIndex] = col;
intColIndex++;
}
// 不断的调用下面的的函数填充array中的内容
// 行,列均从0开始
for (int i = 0; i < intRowCount; i++)
{
for (int j = 0; j < intColCount; j++)
{
arr.SetValue(myTable.Rows[i][lstCol[j]], i, j);
}
}
// 设置array数据,注意选择的行数和列数要与array行数和列数对应
sheet.Range[sheet.Cells[2, 1], sheet.Cells[intRowCount + 1, intColCount]].Value2 = arr;
// 这里给sheet填充内容部分略
// 如果文件已经存在又不想让“是否替换”的提示窗体显示出来,需要先调用File.Delete来删除文件
string strFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
string strPath = HttpContext.Current.Server.MapPath(PageBase.UploadUrl);
workbook.SaveAs(strPath + "\\" + strFileName, missing, missing, missing, missing, missing,
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, missing, missing,
missing, missing, missing);
app.Quit();
Marshal.ReleaseComObject(sheet);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(app);
sheet = null;
workbook = null;
app = null;
GC.Collect();
using (FileStream fs = new FileStream(strPath + "\\" + strFileName, FileMode.Open))
{
byte[] bFile = new byte[fs.Length];
fs.Read(bFile, 0, bFile.Length);
fs.Close();
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bFile);
Response.Flush();
Response.Close();
}
}
catch (Exception exp)
{
throw new Exception(exp.Message);
}
finally
{
if (app != null)
{
app.Quit();
Marshal.ReleaseComObject(sheet);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(app);
sheet = null;
workbook = null;
app = null;
GC.Collect();
}
}
}

这篇关于asp.net fine ui 导出EXCEL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098200

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

C#关闭指定时间段的Excel进程的方法

private DateTime beforeTime;            //Excel启动之前时间          private DateTime afterTime;               //Excel启动之后时间          //举例          beforeTime = DateTime.Now;          Excel.Applicat

MySQL使用mysqldump导出数据

mysql mysqldump只导出表结构或只导出数据的实现方法 备份数据库: #mysqldump 数据库名 >数据库备份名 #mysqldump -A -u用户名 -p密码 数据库名>数据库备份名 #mysqldump -d -A --add-drop-table -uroot -p >xxx.sql 1.导出结构不导出数据 mysqldump --opt -d 数据库名 -u

一步一步将PlantUML类图导出为自定义格式的XMI文件

一步一步将PlantUML类图导出为自定义格式的XMI文件 说明: 首次发表日期:2024-09-08PlantUML官网: https://plantuml.com/zh/PlantUML命令行文档: https://plantuml.com/zh/command-line#6a26f548831e6a8cPlantUML XMI文档: https://plantuml.com/zh/xmi

excel翻译软件有哪些?如何高效提翻译?

你是否曾在面对满屏的英文Excel表格时感到头疼?项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时,效率和理解度都会大打折扣。别担心,只需3分钟,我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是老手,这一技巧都将是你的得力助手,让你在信息的海洋中畅游无阻。 方法一:使用同声传译王软件 同声传译王是一款专业的翻译软件,它支持多种语言翻译,可以excel

Golang GUI入门——andlabs ui

官方不提供gui标准库,只好寻求第三方库。 https://github.com/google/gxui 这个gui库是谷歌内部人员提供的,并不是谷歌官方出品,现在停止维护,只好作罢。 第三方gui库 找了好多,也比较了好多,最终决定使用的是还是 https://github.com/andlabs/ui 相信golang gui还会发展的更好,期待更优秀的gui库 由于andlabs

终于解决了excel操作及cspreadsheet.h问题

困扰多日的excel操作问题终于解决:利用cspreadsheet.h!在vs2005下,不能直接应用cspreadsheet.h,所以必须解决些问题先。 首先, 出现暴多错误。解决UNICODE问题,全部添加L。 [1] +++++++++++++++++++ 其次, 出现问题: error   C2664:   &apos;SQLGetInstalledDriversW &apos;