C#中如何向excel表格写入数据?

所使用的软件:vs2005,office2003;网上的我都试过了,不行!如果可能的话,最好给出自己运行过的代码。... 所使用的软件:vs2005,office2003;
网上的我都试过了,不行!如果可能的话,最好给出自己运行过的代码。
展开
 我来答
lcg1986
2008-10-09 · TA获得超过3374个赞
知道大有可为答主
回答量:1858
采纳率:90%
帮助的人:1616万
展开全部
using System;
using System.IO;
using Excel;

namespace Kits.Excel
{
public class ExcelTools
{
/// <summary>
/// 导出到EXCEL表
/// </summary>
private static void toExcel(string FileName, string SheetName, System.Data.DataTable dt)
{
ApplicationClass myExcel = new ApplicationClass();
Worksheet worksheet = null;

string curPath = Directory.GetParent(FileName).FullName;
if(!Directory.Exists(curPath))
{
Directory.CreateDirectory(curPath);
}

if (File.Exists(FileName))
{
try
{
File.Delete(FileName);
}
catch
{
throw new Exception("文件操作出错,可能正在运行当前的EXCEL文件!");
}
}

try
{
object missing = System.Reflection.Missing.Value;

myExcel.Workbooks.Add(missing);
worksheet = (Worksheet)myExcel.ActiveSheet;
worksheet.Name = SheetName;
myExcel.Visible = false;

int iRows = dt.Rows.Count;
int iCol = dt.Columns.Count;

worksheet.get_Range( worksheet.Cells[1, 1], worksheet.Cells[ iRows+1, iCol] ).NumberFormatLocal = "@";

for( int i=0; i<iCol; i++)
{
worksheet.Cells[1,i+1] = dt.Columns[i].ToString();
}

int size = iRows / 1000;
int page = 0;
string[,] rows = null;
for(int i=0; i<iRows; )
{
if(page<size)
{
rows = new string[1000,iCol];
for(int count=0;count<1000;count++)
{
for(int j=0; j<iCol; j++)
{
rows[count,j] = dt.DefaultView[i][j].ToString();
}
i++;
}
worksheet.get_Range(worksheet.Cells[page * 1000 + 2, 1], worksheet.Cells[ page * 1000 + 1001, iCol]).Value2 = rows;
page++;
}
else
{
int left = iRows % 1000;
rows = new string[left,iCol];
for(int count=0;count<left;count++)
{
for(int j=0; j<iCol; j++)
{
rows[count,j] = dt.DefaultView[i][j].ToString();
}
i++;
}
worksheet.get_Range(worksheet.Cells[iRows+2-left, 1], worksheet.Cells[ iRows+1, iCol]).Value2 = rows;
}
}

worksheet.SaveAs( FileName, missing, missing, missing, missing, missing, missing, missing, missing, missing);

}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
myExcel.Workbooks.Close();
myExcel.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
worksheet = null;
myExcel = null;
GC.Collect();
}

}

/// <summary>
/// 因为调用EXCEL后,结束时EXCEL进程并没有立即KILL,用这个方法调用可以KILL掉EXCEL
/// </summary>
public static void callToExcel(string FileName, string SheetName, System.Data.DataTable dt)
{
toExcel(FileName, SheetName, dt);
GC.Collect();
}
}
}

需要添加一个引用Excel
情感路上的微笑
2019-03-11 · TA获得超过3986个赞
知道大有可为答主
回答量:3029
采纳率:32%
帮助的人:433万
展开全部
插入数据前请先重置行为2,
不然你读取A5后写B列是从6接着写的.
不支持删除单元格,
只能Update清空内容,
原来数据位置写入空数据.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式