用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,而不是逐个单元格写入。

提前感谢。

用C#编写Excel文件

您可以使用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

这对我所做的不起作用,但对你可能会起作用。

另一种选择是合并一个区域中的单元格,构建一个包含数组中所有值的字符串,并将合并后的区域值设置为等于该字符串,但这可能不是您想要的。