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();

相关推荐
追逐时光者2 小时前
一个致力于为 C# 程序员提供更佳的编码体验和效率的 Visual Studio 扩展插件
后端·c#·visual studio
wearegogog1233 小时前
基于 MATLAB 的卡尔曼滤波器实现,用于消除噪声并估算信号
前端·算法·matlab
Drawing stars3 小时前
JAVA后端 前端 大模型应用 学习路线
java·前端·学习
品克缤3 小时前
Element UI MessageBox 增加第三个按钮(DOM Hack 方案)
前端·javascript·vue.js
小二·4 小时前
Python Web 开发进阶实战:性能压测与调优 —— Locust + Prometheus + Grafana 构建高并发可观测系统
前端·python·prometheus
小沐°4 小时前
vue-设置不同环境的打包和运行
前端·javascript·vue.js
qq_419854054 小时前
CSS动效
前端·javascript·css
烛阴4 小时前
3D字体TextGeometry
前端·webgl·three.js
SunflowerCoder4 小时前
EF Core + PostgreSQL 配置表设计踩坑记录:从 23505 到 ChangeTracker 冲突
数据库·postgresql·c#·efcore
桜吹雪5 小时前
markstream-vue实战踩坑笔记
前端