用C#写入Excel文件

时间:2012-03-25 13:18:56

标签: c# excel

我有一个Excel文件,我能够从“Excel文件”Cell中读取单行并将其存储在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(“Single Row”)写入ExcelFile而不是Cell By Cell Wrinting。

先谢谢。

3 个答案:

答案 0 :(得分:2)

我强烈建议您使用FlexCel。它相当便宜,并且有复制行和列的方法。

编辑:我看到你的意思是在工作簿之间复制。使用FlexCel比使用COM或Interop更容易。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

我在一些代码中写了一些Excel代码。我发现这样做的唯一方法是使用foreach迭代我的值列表并使用索引器来跟踪它进入的单元格。您可以调查Range类和Cells属性: http://msdn.microsoft.com/en-US/library/microsoft.office.tools.excel.namedrange.cells(v=vs.80).aspx

它对我正在做的事情不起作用,但它可能适合你。

另一个替代方法是合并范围中的单元格,构建数组中所有值的字符串,并将合并范围值设置为等于该字符串,但这可能不是您想要的。