用C#编写Excel文件
本文关键字:文件 Excel 编写 | 更新日期: 2023-09-27 18:28:52
我有一个Excel文件,我可以逐单元格读取"Excel文件"中的单行,并将其存储在ArrayList中。ExcelRange一次读取一行,并将其存储到ArrayList(arrForValues)中。
ExcelRange = ExcelWorkSheet.get_Range("A"+rowNumber,columnMaxName+rowNumber );
items = (object[,])ExcelRange.Value2;
for (int i = 1; i <= nColumn; i++)
{
arrForValues.Add(items[1, i]);
}
我想将行写入另一个Excel文件。要选择"特定行"进行写入,需要满足一些条件。
有没有什么方法可以将完整的ArrayList("单行")写入ExcelFile,而不是逐个单元格写入。
提前感谢。
您可以使用range的set_value方法写入整个对象数组
以下是示例:
class Program
{
static void Main(string[] args)
{
string file = AppDomain.CurrentDomain.BaseDirectory + "SetArrayToExcel.xlsx";
Excel.Application excelApp = new Excel.Application();
excelApp.Visible = true;
Excel.Workbook wb = excelApp.Workbooks.Open(file, Type.Missing, Type.Missing
, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing
, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing
, Type.Missing, Type.Missing);
object[,] testTable = new object[2, 2]{{"6-Feb-10", 0.1}, {"26-Mar-10", 1.2}};
Excel.Worksheet ws = wb.ActiveSheet as Excel.Worksheet;
Excel.Range rng = ws.get_Range("rngSetValue", Type.Missing);
//rng.Value2 = testTable;
rng.set_Value(Type.Missing, testTable);
}
}
我强烈建议只使用FlexCel。它相当便宜,并且有复制行和列的方法。
编辑:我知道你的意思是在工作簿之间复制。使用FlexCel仍然比COM或Interop更容易。
我用一些代码编写Excel。我找到的唯一方法是用foreach迭代我的值列表,并使用索引器跟踪它要进入的单元格。您可以调查Range类和Cells属性:http://msdn.microsoft.com/en-US/library/microsoft.office.tools.excel.namedrange.cells(v=vs.80).aspx
这对我所做的不起作用,但对你可能会起作用。
另一种选择是合并一个区域中的单元格,构建一个包含数组中所有值的字符串,并将合并后的区域值设置为等于该字符串,但这可能不是您想要的。