explaingit

zaas2/opinionviewer

18C++Audience · ops devopsComplexity · 3/5ActiveLicenseSetup · moderate

TLDR

Windows C++ Qt 6 desktop tool that bulk-extracts review or audit opinions from large piles of Word and Excel documents, with a concurrent parser, ghost-row guards, and SQLite deduplication.

Mindmap

mindmap
  root((OpinionViewer))
    Inputs
      doc and docx files
      xls and xlsx files
      txt files
    Outputs
      Extracted opinions
      SQLite database
      Cleaned text
      Table preview
    Use Cases
      Bulk audit review extraction
      Document feedback mining
      Office automation
    Tech Stack
      C++
      Qt 6
      QtConcurrent
      SQLite
      Windows COM and OLE

Things people build with this

USE CASE 1

Run a large batch of Word and Excel files through the tool and collect all review or audit comments into a single SQLite table.

USE CASE 2

Reuse the Excel ghost-row circuit breaker pattern in another Qt or C++ project that processes user-provided spreadsheets.

USE CASE 3

Study how QtConcurrent plus a background thread keeps a Qt 6 window responsive while parsing thousands of Office files.

USE CASE 4

Apply the INSERT OR IGNORE plus rule15 regex cleanup approach as a template for any deduplicated text-ingest pipeline.

Tech stack

C++QtSQLiteWindowsCOM

Getting it running

Difficulty · moderate Time to first run · 1h+

Needs Visual Studio 2022 plus a configured Qt 6 MSVC kit; the README still contains a Git merge conflict marker, so docs are rough.

MIT license, free to use, modify, and redistribute as long as the copyright notice is kept.

In plain English

OpinionViewer, also called ReviewOpinionTools, is a Windows desktop program written in C++ for pulling review comments out of large piles of Word and Excel documents. The README, which is mostly in Chinese, describes it as a tool for people who routinely have to scan hundreds or thousands of files in mixed formats (doc, docx, xls, xlsx, txt) and extract the bits that count as feedback or audit opinions. The program is built with Qt 6 for its window and table interface, and uses the Windows COM and OLE interfaces to talk to Office files. The README is unusually focused on the failure modes the author wanted to avoid. One is the Excel ghost-row problem, where a spreadsheet visibly has fifty rows but Excel internally reports it as a million, which can send a naive parser into a near-infinite loop. Another is the main thread freezing because too much work is done in the user interface code, leaving the window unresponsive. A third is memory fragmentation when running through huge batches, which can cause crashes. To deal with these, the project uses a concurrent parsing approach based on QtConcurrent, plus what the author calls a circuit-breaker layer that bails out fast when an Excel UsedRange looks impossibly large. Results are stored in a local SQLite database using INSERT OR IGNORE so that re-running the tool over the same files does not produce duplicates. A regex pass called rule15 cleans up extra whitespace and stray characters before insert. To build it, you open the Visual Studio 2022 solution file, make sure a Qt MSVC compiler kit is configured, and build in Release mode. The README notes a dark visual theme and a hover tooltip for previewing rows. The code is released under the MIT license. The repository is small, recently created, and the README still contains a leftover Git merge conflict marker, so the documentation itself is a snapshot of work in progress rather than a polished release.

Copy-paste prompts

Prompt 1
Open OpinionViewer in Visual Studio 2022 with a Qt MSVC kit, build in Release, and run it against a folder of 500 mixed Word and Excel files.
Prompt 2
Walk me through OpinionViewer's Excel ghost-row circuit breaker and port it to a Python pandas pipeline that reads the same files.
Prompt 3
Replace OpinionViewer's regex rule15 cleanup with a configurable rule set that the user can edit from a settings dialog.
Prompt 4
Add an export-to-CSV button to OpinionViewer that dumps the current SQLite results with column headers preserved.
Prompt 5
Resolve the leftover Git merge conflict marker in the README and rewrite the build instructions to cover both MSVC and MinGW Qt kits.
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.