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.Cells[1, i + 1] = tb_result.Columns[i].ColumnName;

}

//填充数据

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

{

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

{

//excel.Cells[row + 2, column + 1].AutoFit();

//if (tb_result.Rows[row][column].GetType() == typeof(string))

try

{

Convert.ToInt32(tb_result.Rows[row][column].ToString().Trim());

excel.Cells[row + 2, column + 1].NumberFormatLocal = "@";

excel.Cells[row + 2, column + 1] = tb_result.Rows[row][column].ToString();

}

catch

{

excel.Cells[row + 2, column + 1] = tb_result.Rows[row][column].ToString();

}

//宽度

excel.Cells[row + 2, column + 1].ColumnWidth = tb_result.Rows[row][column].ToString().Length*1.5;

if (tb_result.Rows[row][column].ToString().Length == 0)

{

excel.Cells[row + 2, column + 1].ColumnWidth = tb_result.Columns[column].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();

相关推荐
程序员爱钓鱼7 小时前
Node.js 编程实战:文件读写操作
前端·后端·node.js
PineappleCoder7 小时前
工程化必备!SVG 雪碧图的最佳实践:ID 引用 + 缓存友好,无需手动算坐标
前端·性能优化
JIngJaneIL7 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码8 小时前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
澄江静如练_8 小时前
列表渲染(v-for)
前端·javascript·vue.js
专注VB编程开发20年8 小时前
C#全面超越JAVA,主要还是跨平台用的人少
java·c#·.net·跨平台
JustHappy8 小时前
「chrome extensions🛠️」我写了一个超级简单的浏览器插件Vue开发模板
前端·javascript·github
Loo国昌8 小时前
Vue 3 前端工程化:架构、核心原理与生产实践
前端·vue.js·架构
sg_knight8 小时前
拥抱未来:ECMAScript Modules (ESM) 深度解析
开发语言·前端·javascript·vue·ecmascript·web·esm