c#怎样往excel中写入数据

2024-11-09 03:11:08
推荐回答(2个)
回答(1):

需要依赖一些类库,
1官方的 有微软自己的Microsoft.Office.Interop.Excel.DLL
这个插件功能非常强大,完整的支持所有的excel功能,(这个dll其实就是EXCEL自己的),但是有个缺点,就是运行这个插件的机器上必须有相应版本的EXCEL软件,否则运行不了,(比如07版excel 你引用的dll必须得是3.5版本)
一般在服务端使用这个插件,把EXCEL生成好之后,通过文件流(stream)传给客户端。

2第三方的, 最推荐的是NPOI (是免费的)
NPOI是POI的.NET版本,支持大部分EXCEL功能,(不如微软自己的dll全面),但是他的执行速度非常的快,因为他是用2进制读取EXCEL单元格的,
而且这个插件不依赖OFFICE组件, 你哪怕电脑打不开EXCEL ,都可以用这个插件生成.XLSX文件, 即可以用在服务端,也可以做胖客户端的处理,(根据数据直接导出EXCEL)。

这些插件的使用都大同小异,因为excel说白了就是一个DataTable,
读取和写入都是从 工作薄(sheet) 找到某一行(row),然后找一列(column)
这样一个个遍历出来单元格的值的、

回答(2):

推荐使用免费版Spire.XLS(Free Spire.XLS)类库。下载并安装Free Spire.XLS, 然后从安装文件夹下引用Spire.Xls.dll到工程中。下面的代码用该dll创建了一个Excel工作薄并写入数据:

//创建一个workbook实例
Workbook wb = new Workbook();
//清除默认的工作表
wb.Worksheets.Clear();
//添加一个工作表并指定表名
Worksheet sheet = wb.Worksheets.Add("职员表");
//横向合并A1到G1的单元格
sheet.Range["A1:G1"].Merge();
//写入数据到A1单元格,设置文字格式及对齐方式
sheet.Range["A1"].Value = "环宇汽车公司员工基本情况登记表"; 
sheet.Range["A1"].HorizontalAlignment = HorizontalAlignType.Center;
sheet.Range["A1"].VerticalAlignment = VerticalAlignType.Center;
sheet.Range["A1"].Style.Font.IsBold = true;sheet.Range["A1"].Style.Font.Size = 13F;
//设置第一行行高sheet.Rows[0].RowHeight = 30F;
//创建一个DataTableDataTable dt = new DataTable();
dt.Columns.Add("姓名");dt.Columns.Add("性别");
dt.Columns.Add("出生日期");
dt.Columns.Add("学历");
dt.Columns.Add("联系电话");
dt.Columns.Add("职务");
dt.Columns.Add("工号");
dt.Rows.Add("王伟", "男", "1990年2月10日", "本科", "13524756854", "销售","0054");
dt.Rows.Add("李宁", "男", "1985年6月8日", "大专", "13259863247", "销售","0055");
dt.Rows.Add("邓家佳", "女", "1989年11月25日", "本科", "13601540352", "销售","0029");
dt.Rows.Add("杜平安", "男", "1978年4月16日", "中专", "13352014060", "保安","0036");
dt.Rows.Add("唐静", "女", "1980年1月21日", "本科", "13635401489", "店长","0010");
//将DataTable数据写入工作表
sheet.InsertDataTable(dt, true, 2, 1, true);
//设置该区域行高
sheet.Range["A2:G7"].RowHeight = 15F;
//设置第三列及第五列列宽
sheet.Range["A2:G7"].Columns[2].ColumnWidth = 15F;
sheet.Range["A2:G7"].Columns[4].ColumnWidth = 15F;
//设置网格线样式及颜色
sheet.Range["A2:G7"].BorderAround(LineStyleType.Medium);   
sheet.Range["A2:G7"].BorderInside(LineStyleType.Thin);
sheet.Range["A2:G2"].BorderAround(LineStyleType.Medium);
sheet.Range["A2:G7"].Borders.KnownColor = ExcelColors.Black;
//保存为.xlsx文件
wb.SaveToFile("创建Excel.xlsx", FileFormat.Version2013);

除了创建Excel外,这个类库还支持转换和修改Excel等功能,你可以研究一下