C#操作Excel表格 请问怎么用C#操作Excel表格,主要是要写的数据相当大,所以有以下几个要求: 1.写的时候不需要打开excel表格, 2.需要具体名字的不同sheet, 3.需要具体操作各个sheet下面的每一个cell 4.最好可以直接用循环之类的语句操作cells先谢谢各位了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();Workbooks workbooks = xlApp.Workbooks;Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);Worksheet worksheet = (Worksheet)workbook.Worksheets[1];object[,] datas = new object[table.Rows.Count + 2, table.Columns.Count + 1]; for (int i = 0; i < table.Columns.Count; i++) //写入字段{ datas[0, i] = table.Columns[i].ColumnName;}Range range = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, table.Columns.Count]);range.Interior.ColorIndex = 15;//15代表灰色range.Font.Bold = true;range.Font.Size = 9;int r = 0;for (r = 0; r < table.Rows.Count; r++) { for (int i = 0; i < table.Columns.Count; i++) {object obj = table.Rows[r][table.Columns[i].ColumnName];datas[r + 1, i] = obj;//在obj.ToString()前加单引号是为了防止自动转化格式 } } Range fchR = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[table.Rows.Count + 2, table.Columns.Count + 1]);fchR.Value2 = datas; worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。range = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[table.Rows.Count + 1, table.Columns.Count]);//15代表灰色range.Font.Size = 9;range.RowHeight = 14.25;range.Borders.LineStyle = 1;range.HorizontalAlignment = 1;workbook.Saved = true;workbook.SaveCopyAs(saveFileName);xlApp.Quit();GC.Collect();//强行销毁 excel的微软做的不是很完美,看你用的是什么版本了,03版本的话可能用上面的方法可能不会出错,不过07版本的话就不好说了,你最好用03版本的excel调试。。 Microsoft.Office.Interop.Excel;有没有详细的技术文档可以查看?你的这段代码不能用 using Excel;public string ExportAsExcel(DataGridView dvw, string filePath) { Excel.Application excel = new Excel.Application(); Workbook book = excel.Workbooks.Add(Missing.Value); Sheets sheet = book.ActiveSheet as Sheets; excel.Visible = false; for (int j = 0; j < dvw.Columns.Count; j++) excel.Cells[1, j + 1] = dvw.Columns[j].HeaderText; for (int i = 0; i < dvw.Rows.Count; i++) { for (int j = 0; j < dvw.Columns.Count; j++) excel.Cells[i + 2, j + 1] = dvw.Rows[i].Cells[j].Value; } book.SaveAs(filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); book.Close(false, Missing.Value, Missing.Value); excel.Workbooks.Close(); excel.Quit(); return filePath; }这是我看了网上好好多多的EXCEL后改的,精简,就是有点慢, http://blog.csdn.net/wangyong0921/article/details/6550399楼主看这个 C# 在word文档中写入一段文字 帮我解释一下网上找到的一篇文章 如何添加资源文件 请教问题......高手帮帮忙. 向高手请教,在线等待解决!!! 求教,javascript按钮点击后,执行ASP.net按钮,急[谢谢] 关于UDP的receive问题 在.net的c#里添加.ocx控件的引用如何后使用控件的OnEvent事件? DevExpress 中 XtraTabbedMdiManager 用法 在线等,并非所有的代码路径都返回值问题 C#怎么快速求出三点之间的夹角 asp.net如何验证用户名已存在
Workbooks workbooks = xlApp.Workbooks;
Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
object[,] datas = new object[table.Rows.Count + 2, table.Columns.Count + 1];
for (int i = 0; i < table.Columns.Count; i++) //写入字段
{
datas[0, i] = table.Columns[i].ColumnName;
}
Range range = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, table.Columns.Count]);
range.Interior.ColorIndex = 15;//15代表灰色
range.Font.Bold = true;
range.Font.Size = 9;
int r = 0;
for (r = 0; r < table.Rows.Count; r++)
{
for (int i = 0; i < table.Columns.Count; i++)
{
object obj = table.Rows[r][table.Columns[i].ColumnName];
datas[r + 1, i] = obj;//在obj.ToString()前加单引号是为了防止自动转化格式
}
}
Range fchR = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[table.Rows.Count + 2, table.Columns.Count + 1]);
fchR.Value2 = datas;
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
range = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[table.Rows.Count + 1, table.Columns.Count]);
//15代表灰色
range.Font.Size = 9;
range.RowHeight = 14.25;
range.Borders.LineStyle = 1;
range.HorizontalAlignment = 1;
workbook.Saved = true;
workbook.SaveCopyAs(saveFileName);
xlApp.Quit();
GC.Collect();//强行销毁
你的这段代码不能用
public string ExportAsExcel(DataGridView dvw, string filePath)
{
Excel.Application excel = new Excel.Application();
Workbook book = excel.Workbooks.Add(Missing.Value);
Sheets sheet = book.ActiveSheet as Sheets;
excel.Visible = false;
for (int j = 0; j < dvw.Columns.Count; j++)
excel.Cells[1, j + 1] = dvw.Columns[j].HeaderText;
for (int i = 0; i < dvw.Rows.Count; i++)
{
for (int j = 0; j < dvw.Columns.Count; j++)
excel.Cells[i + 2, j + 1] = dvw.Rows[i].Cells[j].Value;
}
book.SaveAs(filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
book.Close(false, Missing.Value, Missing.Value);
excel.Workbooks.Close();
excel.Quit();
return filePath;
}这是我看了网上好好多多的EXCEL后改的,精简,就是有点慢,