我有一个excel文件,有~10列和1-20行.我需要插入1-20行与各种数据元素.
我想知道是否有办法在excel文件中放置一些标签,以便找到并替换它们.将列标记为"名称"的东西.在代码中这样我可以说:
Name[0] = object.name;
我不确定这种确切的方法是否可行,但我真的不需要任何繁重的工作,我宁愿不对单元格位置进行硬编码,因为excel文件可能会随着时间的推移而改变.
我还必须在行中添加隐藏的"ID"单元格.我想我以后可以越过那座桥了.
Ste*_*eve 12
使用ADO.NET很容易向Excel工作表添加行
string fileName = @"D:\test.xlsx";
string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source={0};Extended Properties='Excel 12.0;HDR=YES;IMEX=0'", fileName);
using(OleDbConnection cn = new OleDbConnection(connectionString))
{
cn.Open();
OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [Sheet1$] " +
"([Column1],[Column2],[Column3],[Column4]) " +
"VALUES(@value1, @value2, @value3, @value4)", cn);
cmd1.Parameters.AddWithValue("@value1", "Key1");
cmd1.Parameters.AddWithValue("@value2", "Sample1");
cmd1.Parameters.AddWithValue("@value3", 1);
cmd1.Parameters.AddWithValue("@value4", 9);
cmd1.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码假定您有一个第一行,其头部包含Column1 ...作为列名.此外,代码使用Excel OleDB提供程序用于Excel 2007或2010而不是Microsoft.Jet.OleDb.4.0.
编辑:要引用命名范围,您可以将sql命令更改为此命令
OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [yourNamedRange] " +
"VALUES(@value1, @value2, @value3, @value4)", cn);
Run Code Online (Sandbox Code Playgroud)
唉,我找不到引用单个列的方法.
private Excel.Application app = null;
private Excel.Workbook workbook = null;
private Excel.Worksheet worksheet = null;
private Excel.Range workSheet_range = null;
private const int FIRTSCOLUMN= 0 //Here const you will use to select good column
private const int FIRSTROW= 0
private const int FIRSTSHEET= 1
app = new Excel.Application();
app.Visible = true;
workbook = app.Workbooks.Add(1);
worksheet = (Excel.Worksheet)workbook.Sheets[FIRSTSHEET];
addData(FIRSTROW,FIRTSCOLUMN,"yourdata");
public void addData(int row, int col, string data)
{
worksheet.Cells[row, col] = data;
}
Run Code Online (Sandbox Code Playgroud)