对于EXCEL文件操作时,有可能需要程序操作这个EXCEL文件。
下面是对EXCEL文件操作的一种方式。
源码如下:
byte[] bookdata = doc.GetStreamData("Workbook");
if (bookdata == null) return;
Workbook book = WorkbookDecoder.Decode(new MemoryStream(bookdata));
tabControlSheets.TabPages.Clear();
foreach (Worksheet sheet in book.Worksheets)
{
TabPage sheetPage = new TabPage(sheet.Name);
DataGridView dgvCells = new DataGridView();
dgvCells.Dock = DockStyle.Fill;
dgvCells.RowCount = sheet.Cells.LastRowIndex + 1;
dgvCells.ColumnCount = sheet.Cells.LastColIndex + 1;
foreach (Pair<Pair<int, int>, Cell> cell in sheet.Cells)
{
dgvCells[cell.Left.Right, cell.Left.Left].Value = cell.Right.Value;
if (cell.Right.Style.BackColor != Color.White)
{
dgvCells[cell.Left.Right, cell.Left.Left].Style.BackColor = cell.Right.Style.BackColor;
}
}
for (int rowIndex = sheet.Cells.FirstRowIndex; rowIndex <= sheet.Cells.LastRowIndex; rowIndex++)
{
Row row = sheet.Cells.GetRow(rowIndex);
for (int colIndex = row.FirstColIndex; colIndex <= row.LastColIndex; colIndex++)
{
Cell cell = row.GetCell(colIndex);
}
}
foreach (KeyValuePair<int, Row> row in sheet.Cells.Rows)
{
foreach (KeyValuePair<int, Cell> cell in row.Value)
{
}
}
foreach (KeyValuePair<Pair<int, int>, Picture> cell in sheet.Pictures)
{
int rowIndex = cell.Key.Left;
int colIndex = cell.Key.Right;
if (dgvCells.RowCount < rowIndex + 1)
{
dgvCells.RowCount = rowIndex + 1;
}
if (dgvCells.ColumnCount < colIndex + 1)
{
dgvCells.ColumnCount = colIndex + 1;
}
dgvCells[colIndex, rowIndex].Value = String.Format("<Image,{0}>", cell.Value.Image.FileExtension);
}
sheetPage.Controls.Add(dgvCells);
tabControlSheets.TabPages.Add(sheetPage);
}
资源:下载