C# 使用Microsoft.Office.Interop.Excel.Application对 Excel创建、写入

System.Reflection.Missing miss = System.Reflection.Missing.Value;

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

excel.Application.Workbooks.Add(true);

excel.Visible = false;

if (excel == null)

{

MessageBox.Show("EXCEL无法启动!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

Microsoft.Office.Interop.Excel.Workbooks books = (Microsoft.Office.Interop.Excel.Workbooks)excel.Workbooks;

Microsoft.Office.Interop.Excel.Workbook book = (Microsoft.Office.Interop.Excel.Workbook)books.Add(miss);

Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;

sheet.Name = "Sheet";//工作薄名称

//填充列头

for (int i = 0; i < tb_result.Columns.Count; i++)

{

excel.Cells1, i + 1 = tb_result.Columnsi.ColumnName;

}

//填充数据

for (int row = 0; row <= tb_result.Rows.Count - 1; row++)

{

for (int column = 0; column < tb_result.Columns.Count; column++)

{

//excel.Cellsrow + 2, column + 1.AutoFit();

//if (tb_result.Rowsrowcolumn.GetType() == typeof(string))

try

{

Convert.ToInt32(tb_result.Rowsrowcolumn.ToString().Trim());

excel.Cellsrow + 2, column + 1.NumberFormatLocal = "@";

excel.Cellsrow + 2, column + 1 = tb_result.Rowsrowcolumn.ToString();

}

catch

{

excel.Cellsrow + 2, column + 1 = tb_result.Rowsrowcolumn.ToString();

}

//宽度

excel.Cellsrow + 2, column + 1.ColumnWidth = tb_result.Rowsrowcolumn.ToString().Length*1.5;

if (tb_result.Rowsrowcolumn.ToString().Length == 0)

{

excel.Cellsrow + 2, column + 1.ColumnWidth = tb_result.Columnscolumn.ColumnName.Length * 1.5;

}

}

}

string Version = excel.Version;

int FormatNum;

if (Convert.ToDouble(Version) < 12)

{

FormatNum = -4143;

}

else

{

FormatNum = 56;

}

sheet.SaveAs(filepath, FormatNum, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);

book.Close(false, miss, miss);

books.Close();

excel.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);

System.Runtime.InteropServices.Marshal.ReleaseComObject(book);

System.Runtime.InteropServices.Marshal.ReleaseComObject(books);

System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);

GC.Collect();

相关推荐
雪芽蓝域zzs2 分钟前
新建前端pnpm(vue js ) 仿若依项目(一)
前端·javascript·vue.js
vipbic3 分钟前
网站升级了,我却有点舍不得
前端·vue.js·后端
IT_陈寒3 分钟前
Java Stream并行处理让我数据库崩了两次
前端·人工智能·后端
恋猫de小郭3 分钟前
Flutter 3.47 首坑,analysis_options 问题连环回归
android·前端·flutter
YWL25 分钟前
OpenLayers测距测面:完整测量工具
前端·javascript·vue.js·信息可视化·openlayers
zhanghaha131433 分钟前
HTML系列教程:2_HTML 编辑器(零基础超详细讲解
前端·编辑器·html
半旧51838 分钟前
【Java Web02】WEB服务器内部实现技术揭秘
java·服务器·前端
拿本唠嗑AI研究1 小时前
现代前端架构爬虫指南:从静态页面到 React/Vue 单页应用
前端·爬虫·架构
不剪发的Tony老师1 小时前
DuckDB数据分析实战:读写Excel文件
数据分析·excel·duckdb
独孤九剑打醒他1 小时前
【原创开源】双层Master‑Worker软硬协同调度架构:从根源解决分布式数据一致性难题
前端·嵌入式硬件·架构·前端框架·硬件工程