您当前的位置:首页 > 计算机 > 编程开发 > .net

C# Excel -只读/选择具有值/数据的单元格

时间:01-01来源:作者:点击数:

如何读取excel文件并只选择那些包含数据的单元格-不带格式,不带空格,只选文本或数字。

我知道我可以像这样读取电子表格:我如何才能只对这些单元格进行“选择”并进行复制。

Excel.Application excelApp = new Excel.Application();
    if (excelApp != null)
    {
        Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(@"C:\test.xls", 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
        Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelWorkbook.Sheets[1];

        Excel.Range excelRange = excelWorksheet.UsedRange;
        int rowCount = excelRange.Rows.Count;
        int colCount = excelRange.Columns.Count;

        for (int i = 1; i <= rowCount; i++)
        {
            for (int j = 1; j <= colCount; j++)
            {
                Excel.Range range = (excelWorksheet.Cells[i, 1] as Excel.Range);
                string cellValue = range.Value.ToString();

                //do anything
            }
        }

        excelWorkbook.Close();
        excelApp.Quit();

使用您现有的方法,您缺少的是将值与string.empty进行比较,并知道您可以使用Excel.Application.Union组合范围。

考虑一下这段伪代码(也就是我没有运行它)。

需要注意的是,如果你想要更高的精度(比显示给用户的excel格式更高),你应该使用.Value2而不是.Value。

public void CopyValues()
        {
            Excel.Application excelApp = new Excel.Application();
            if (excelApp != null)
            {
                Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(@"C:\test.xls", 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
                Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelWorkbook.Sheets[1];

                Excel.Range excelRange = excelWorksheet.UsedRange;
                int rowCount = excelRange.Rows.Count;
                int colCount = excelRange.Columns.Count;

                Excel.Range copyRange = null;

                for (int i = 1; i <= rowCount; i++)
                {
                    for (int j = 1; j <= colCount; j++)
                    {
                        Excel.Range range = (excelWorksheet.Cells[i, j] as Excel.Range);
                        if (range.Value.ToString().Trim() != string.Empty)
                        {
                            if (copyRange == null)
                            {
                                copyRange = range;
                            }
                            else
                            {
                                //Its got somehting so union it in
                                copyRange = excelApp.Union(copyRange, range);
                            }
                        }


                    }
                }
                //Copy to clipboard
                copyRange.Copy();

                excelWorkbook.Close();
                excelApp.Quit();
            }
        }

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
上一篇:C# 强制结束程序 下一篇:很抱歉没有了
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐