我有一个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。
先谢谢。
答案 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
它对我正在做的事情不起作用,但它可能适合你。
另一个替代方法是合并范围中的单元格,构建数组中所有值的字符串,并将合并范围值设置为等于该字符串,但这可能不是您想要的。